int x,y,s,t,u,v,q=256;float a=sin(A),b=cos(A);int main(){for(y=-q;y<q;y++)for(x=-q;u=(b*x-a*y)/M,v=(a*x+b*y)/M,s=16+u-((u+((v+Y)/28&1?16:0))&31),t=14+v-(v+Y)%28,u=(b*s+a*t)*M,v=(b*t-a*s)*M,x<q;x++)putchar(hypot(u-x,v-y)<(6+7*cos(T+S*hypot(u,v)))*M?-1:0);}
// simplified hex version (max circle radius = 14)
int x,y,s,t;int main(){for(;y<512;y++)for(x=0;s=16+x-((x+(y/28&1?16:0))&31),t=14+y-y%28,x<512;x++)putchar(hypot(s-x,t-y)<6+7*sin(T+hypot(s-256,t-256)/32)?-1:0);}
// hex version
int x,y,u,v,s,t;int main(){for(;v=y%28,y<512;y++)for(x=0;s=16,t=28,u=(x+(y/t&1?16:0))&31,x<512;s+=x-u,t+=y-v,putchar(hypot(s-x,t-y)<6+7*sin(T+hypot(s-256,t-256)/32)?-1:0),x++)if(u<16&&v<-0.6*(u-32))s=t=0;else if(u>=16&&v<0.6*u)s=32,t=0;}
// shorter
int x,y;int main(){for(;y<512;y++)for(x=0;x<512;x++)putchar(hypot(16-x+(x&~31),(y&~31)+16-y)<6+7*sin(T+hypot((x>>5)-7.5,(y>>5)-7.5))?-1:0);}