                    /**/#include<unistd.h>/***/
                   /**/#include<stdio.h>/***/
                  int*p,*q,s[1<<20],j,x,y,z
                 =1;int main(){int W=w/2,
                H=h/2,M=W-~W,N=W*H,T=M*
               H*2,i=N+(2-W-H*3)/2,R=
              getpid();p=s+T*02;for
             (s[*p=i+i%(W+W-3)/(W
            -1)*2+i/(M-4)*4-~W]
           =7;z;){for(x=p[i=(
          R=65535&(R*3533+1
         ))%z--],p[i]=*p,
        *p++=x,i=7;W<=x&&x<M*H&&x%M%W&&x%
       M-W+1&&--i;){!s[y=x+~-i/2*W-W-i%
      2+i/4]?s[p[z++]=y]=i,s[y+T]=x:0
     ;}}for(;p>s+T*2;*q|=*q*20<N?7:
    0,s[q[T]]+=*q/8*8+8){q=s+*--p
              ;}for(;j<T;i=j&1,
             y=p[W+1],z=(x+y+
            *p)*4/N,printf(
           "\33[38;5;%d;"
          "%dm%c\33[0m"
         ,z<15?-~(z%5)*(1+z/5*5+z/
        10*25)+15:231,x%8-3&&y%8
       -4?24:4,j%M?*p%8+~i&&(i
      ?x:y)%8-6+i?32:i?47:92:
                   10)){x=W
                  [p=j++/
                 2+s];}
                return
               /*/*
              /*/
             0;
            }
