/**/
                                          #include<stdio.h>
                                       #include<sys/./time.h>
                                    #include<stdlib.h>/*TOUHOU*/
                                    #include<GL/glut.h>/*.BUNKA*/
                                   #define z(u,n)gl##n##u/*CHOU*/
                                  typedef double x;typedef int _;_ A,y,a,_w,w;
                               T(){glutInitDisplayMode(GLUT_RGBA|GLUT_DOUBLE);z(ow
                           ,utSetWind)(glutCreateWindow("Aya"));a=GL_SRC_ALPHA;z(ble
                       ,Ena)(GL_BLEND);glBlendFunc(a,GL_ONE_MINUS_SRC_ALPHA);glEnable(
                    GL_TEXTURE_2D);}W(_ O){glTexParameteri(GL_TEXTURE_2D,O,GL_NEAREST);
                 }V(x O,x P,x Q,x R){glTexCoord2d(O,P);glVertex2d(Q,R);}unsigned char*p,b
              [0x4000];B(_ O){glMatrixMode(O);glLoadIdentity();}C(){glDrawBuffer(GL_BACK);
            glClear(GL_COLOR_BUFFER_BIT);glViewport(0,0,a=glutGet(GLUT_WINDOW_WIDTH),y=z(et
          ,utG)(GLUT_WINDOW_HEIGHT));B(GL_PROJECTION);if(a>y)gluOrtho2D(-a/(x)y,a/(x)y,-1,1);
         else{gluOrtho2D(-1,1,-y/(x)a,y/(x)a);}B(GL_MODELVIEW); }x X(x O){return O*(x)(rand()&
        0x3fff)/8191.-O;}x BUN[]={.9,.98,1,0,-1},KA[]={.32,.98   ,.36,.12,.54,.12,.58,.98,.9,.98
        ,1 ,0,-1},CHOU[]={.56,.99,.58,.7,.9,0,-1},t,u,v;Z(){     struct timeval U;gettimeofday(&U
       ,  NULL);u=U.tv_sec+U.tv_usec/1e6;}x c,d,r,s,i,j,k,l      ,m,n;I(){Z();srand(u);C();s=(u-l)/
          1.5;for(a=0;a<23;a++){if(     (j=s-a/23.)>=0){r       =j*2.1;for(y=0;y<32;y++){m=i+y*d/16.
         ;k=j*((c+y*d/16.0)-m)+m;    if(a&  1  )k+=             d/32.;glPushMatrix();glTranslated(r*
        cos(k) +n, r*sin(k)+t,0)              ;z          (st  ,/*  ,*/ CallLi)(w);glPopMatrix();}}}
       if(2.2  <s) {l=u;c=i=X(d) ;if(        !        (rand()&3))c+=X( d/3);n=X(.5);t=X(.5);}z(fers
      ,/*AYA   */  utSwapBuf)();z(   h                            ,Flus)();}F(){Z();glGenTextures
     (1,&_w        );z(ndTexture                                 ,   Bi)(  GL_TEXTURE_2D,_w);/*;)
     {*/w=         GL_TEXTURE_2D   ;z(                        Image2D     ,Tex)(w,0,GL_RGBA,64,64,
     0,/*(          ;*/GL_RGBA,   /* 06                     10    22*/    GL_UNSIGNED_BYTE,b);w=z(
     Lists         ,Gen)(01);t=   0.07;                     /*   ,*/A=    GL_TEXTURE_MAG_FILTER ;a
      =(0+         GL_COMPILE);   z(ist                     ,NewL)(w,a  );;a=GL_TRIANGLE_FAN;z( n,
      Begi        )(a);V(0,0,-t   ,-t);                     V(1,0,t,-t);y=GL_TEXTURE_MIN_FILTER  ;
       V(       1,1,t,t);V(0,1,    -t,                      t);glEnd( );glEndList();W(A);W(y);{
         ;     }l=u;n=a=t=i=c;{                               ;}z(   DisplayFunc,ut)(I);I();}N
              (){z(stRedisplay                                       ,utPo)();}M(_ Y,_ O){N();
             ;}f(unsigned char                                        Z,_ U,_ N){glFlush();z(s
            ,DeleteList)(w,01);                                      glDeleteTextures(1,&_w);
            {;} exit(0);}D(){z(            oardFunc                  ,utKeyb)(f);z(tIdleFunc
           ,u) (N);z(tDisplayFunc          ,u)(F);z                   (ReshapeFunc,ut)( M);z
           (p  ,utMainLoo)();}x o(          x*q){s=                  *q++;v=*(q++);if( r>s)
           {  for(;(j=*q++)>s;){k=(*          q++)                 ;if(r<j){v=(k-v)   *(r-
             s)/(j-s)+v;break;}s=j;v=k                            ;}}return(255*     v);}
            main(_ H,char**G){;glutInit(&                         H,G   ); d=     atan2(
            c=0,-1);for(a=0;a<16384;b[a++]=0                      )               ;p=b
           ;for(a=0;a<64;a++){m=a/32.-1;for(y=0;y                 <              64;
            y++){r=y/32.-1;r=sqrt(m*m+r*r);if    (                 (
            A=o(BUN))>255)A=255;*p++=A;if((A      =
             o(KA))>255)A=255;*p++=A;*p++=A;A=
            o(CHOU);if(       A>255)A= 255;
              *p++=A;      }}T();
                D()
                  ;}

  SAMPLE