#include<allegro.h>
/*01*/int pd[7][4][4][2]={{{{0,0},{0,1},{1,0},{1,1}},{{0,0},{0,1},{1,0},{1,1}},{{0,0},{0,1},{1,0},{1,1}},{{0,0},{0,1},{1,0},{1,1}}},{{{0,0},{1,0},{2,0},{3,0}},{{0,0},{0,1},{0,2},{0,3}},{{0,0},{1,0},{2,0},{3,0}},{{0,0},{0,1},{0,2},{0,3}}},{{{1,0},{0,1},{1,1},{2,1}},{{0,0},{0,1},{1,1},{0,2}},{{0,0},{1,0},{2,0},{1,1}},{{1,0},{0,1},{1,1},{1,2}}},{{{2,0},{0,1},{1,1},{2,1}},{{0,0},{0,1},{0,2},{1,2}},{{0,0},{1,0},{2,0},{0,1}},{{0,0},{1,0},{1,1},{1,2}}},{{{0,0},{0,1},{1,1},{2,1}},{{0,0},{1,0},{0,1},{0,2}},{{0,0},{1,0},{2,0},{2,1}},{{1,0},{1,1},{0,2},{1,2}}},{{{0,0},{1,0},{1,1},{2,1}},{{1,0},{0,1},{1,1},{0,2}},{{0,0},{1,0},{1,1},{2,1}},{{1,0},{0,1},{1,1},{0,2}}},{{{1,0},{2,0},{0,1},{1,1}},{{0,0},{0,1},{1,1},{1,2}},{{1,0},{2,0},{0,1},{1,1}},{{0,0},{0,1},{1,1},{1,2}}}};
/*02*/int main(void){BITMAP* buffer;
/*03*/if(allegro_init()?1:set_gfx_mode(GFX_AUTODETECT_WINDOWED,192,352,0,0)<0?1:install_timer()<0?1:install_keyboard()<0?1:!(buffer=create_bitmap_ex(8,SCREEN_W,SCREEN_H+50))?1:0)return 1;
/*04*/clear(buffer);
/*05*/rect(buffer,0,0,11,21,makecol(255,0,0));
/*06*/buffer->line[22][8]=(buffer->line[22][7]=(time(NULL)+(buffer->line[22][1]=(buffer->line[22][2]=1)+4))%7)*0;
/*07*/while(!key[KEY_ESC]&&buffer->line[22][0]==0){while(retrace_count){if((buffer->line[22][1]+=(key[KEY_LEFT]&&!(buffer->line[22][4]%4)&&!(buffer->line[buffer->line[22][2]+pd[buffer->line[22][7]][buffer->line[22][8]][0][1]][buffer->line[22][1]+pd[buffer->line[22][7]][buffer->line[22][8]][0][0]-1]+buffer->line[buffer->line[22][2]+pd[buffer->line[22][7]][buffer->line[22][8]][1][1]][buffer->line[22][1]+pd[buffer->line[22][7]][buffer->line[22][8]][1][0]-1]+buffer->line[buffer->line[22][2]+pd[buffer->line[22][7]][buffer->line[22][8]][2][1]][buffer->line[22][1]+pd[buffer->line[22][7]][buffer->line[22][8]][2][0]-1]+buffer->line[buffer->line[22][2]+pd[buffer->line[22][7]][buffer->line[22][8]][3][1]][buffer->line[22][1]+pd[buffer->line[22][7]][buffer->line[22][8]][3][0]-1])?-1:key[KEY_RIGHT]&&!(buffer->line[22][4]%4)&&!(buffer->line[buffer->line[22][2]+pd[buffer->line[22][7]][buffer->line[22][8]][0][1]][buffer->line[22][1]+pd[buffer->line[22][7]][buffer->line[22][8]][0][0]+1]+buffer->line[buffer->line[22][2]+pd[buffer->line[22][7]][buffer->line[22][8]][1][1]][buffer->line[22][1]+pd[buffer->line[22][7]][buffer->line[22][8]][1][0]+1]+buffer->line[buffer->line[22][2]+pd[buffer->line[22][7]][buffer->line[22][8]][2][1]][buffer->line[22][1]+pd[buffer->line[22][7]][buffer->line[22][8]][2][0]+1]+buffer->line[buffer->line[22][2]+pd[buffer->line[22][7]][buffer->line[22][8]][3][1]][buffer->line[22][1]+pd[buffer->line[22][7]][buffer->line[22][8]][3][0]+1])?1:0))&&(buffer->line[22][2]+=((!(buffer->line[22][4]++%32)||key[KEY_DOWN])&&!(buffer->line[buffer->line[22][2]+pd[buffer->line[22][7]][buffer->line[22][8]][0][1]+1][buffer->line[22][1]+pd[buffer->line[22][7]][buffer->line[22][8]][0][0]]+buffer->line[buffer->line[22][2]+pd[buffer->line[22][7]][buffer->line[22][8]][1][1]+1][buffer->line[22][1]+pd[buffer->line[22][7]][buffer->line[22][8]][1][0]]+buffer->line[buffer->line[22][2]+pd[buffer->line[22][7]][buffer->line[22][8]][2][1]+1][buffer->line[22][1]+pd[buffer->line[22][7]][buffer->line[22][8]][2][0]]+buffer->line[buffer->line[22][2]+pd[buffer->line[22][7]][buffer->line[22][8]][3][1]+1][buffer->line[22][1]+pd[buffer->line[22][7]][buffer->line[22][8]][3][0]])?1:0))&&(1+(buffer->line[22][8]=(buffer->line[22][8]+((key[KEY_UP]&&!(buffer->line[22][4]%4)&&!(buffer->line[buffer->line[22][2]+pd[buffer->line[22][7]][(buffer->line[22][8]+1)%4][0][1]+1][buffer->line[22][1]+pd[buffer->line[22][7]][(buffer->line[22][8]+1)%4][0][0]]+buffer->line[buffer->line[22][2]+pd[buffer->line[22][7]][(buffer->line[22][8]+1)%4][1][1]+1][buffer->line[22][1]+pd[buffer->line[22][7]][(buffer->line[22][8]+1)%4][1][0]]+buffer->line[buffer->line[22][2]+pd[buffer->line[22][7]][(buffer->line[22][8]+1)%4][2][1]+1][buffer->line[22][1]+pd[buffer->line[22][7]][(buffer->line[22][8]+1)%4][2][0]]+buffer->line[buffer->line[22][2]+pd[buffer->line[22][7]][(buffer->line[22][8]+1)%4][3][1]+1][buffer->line[22][1]+pd[buffer->line[22][7]][(buffer->line[22][8]+1)%4][3][0]])?1:0)))%4))&&(!(buffer->line[22][4]%32)&&(buffer->line[buffer->line[22][2]+pd[buffer->line[22][7]][buffer->line[22][8]][0][1]+1][buffer->line[22][1]+pd[buffer->line[22][7]][buffer->line[22][8]][0][0]]+buffer->line[buffer->line[22][2]+pd[buffer->line[22][7]][buffer->line[22][8]][1][1]+1][buffer->line[22][1]+pd[buffer->line[22][7]][buffer->line[22][8]][1][0]]+buffer->line[buffer->line[22][2]+pd[buffer->line[22][7]][buffer->line[22][8]][2][1]+1][buffer->line[22][1]+pd[buffer->line[22][7]][buffer->line[22][8]][2][0]]+buffer->line[buffer->line[22][2]+pd[buffer->line[22][7]][buffer->line[22][8]][3][1]+1][buffer->line[22][1]+pd[buffer->line[22][7]][buffer->line[22][8]][3][0]]))){buffer->line[22][3]=buffer->line[buffer->line[22][2]+pd[buffer->line[22][7]][buffer->line[22][8]][0][1]][buffer->line[22][1]+pd[buffer->line[22][7]][buffer->line[22][8]][0][0]]=buffer->line[buffer->line[22][2]+pd[buffer->line[22][7]][buffer->line[22][8]][1][1]][buffer->line[22][1]+pd[buffer->line[22][7]][buffer->line[22][8]][1][0]]=buffer->line[buffer->line[22][2]+pd[buffer->line[22][7]][buffer->line[22][8]][2][1]][buffer->line[22][1]+pd[buffer->line[22][7]][buffer->line[22][8]][2][0]]=buffer->line[buffer->line[22][2]+pd[buffer->line[22][7]][buffer->line[22][8]][3][1]][buffer->line[22][1]+pd[buffer->line[22][7]][buffer->line[22][8]][3][0]]=1;
/*08*/while(++buffer->line[22][3]<21)if(buffer->line[buffer->line[22][3]][1]+buffer->line[buffer->line[22][3]][2]+buffer->line[buffer->line[22][3]][3]+buffer->line[buffer->line[22][3]][4]+buffer->line[buffer->line[22][3]][5]+buffer->line[buffer->line[22][3]][6]+buffer->line[buffer->line[22][3]][7]+buffer->line[buffer->line[22][3]][8]+buffer->line[buffer->line[22][3]][9]+buffer->line[buffer->line[22][3]][10]==10)blit(buffer,buffer,1,1,1,2,10,buffer->line[22][3]-1);
/*09*/if(1+(buffer->line[22][8]=(buffer->line[22][7]=(time(NULL)+(buffer->line[22][1]=(buffer->line[22][2]=1)+4))%7)*0)&&(buffer->line[buffer->line[22][2]+pd[buffer->line[22][7]][buffer->line[22][8]][0][1]][buffer->line[22][1]+pd[buffer->line[22][7]][buffer->line[22][8]][0][0]]+buffer->line[buffer->line[22][2]+pd[buffer->line[22][7]][buffer->line[22][8]][1][1]][buffer->line[22][1]+pd[buffer->line[22][7]][buffer->line[22][8]][1][0]]+buffer->line[buffer->line[22][2]+pd[buffer->line[22][7]][buffer->line[22][8]][2][1]][buffer->line[22][1]+pd[buffer->line[22][7]][buffer->line[22][8]][2][0]]+buffer->line[buffer->line[22][2]+pd[buffer->line[22][7]][buffer->line[22][8]][3][1]][buffer->line[22][1]+pd[buffer->line[22][7]][buffer->line[22][8]][3][0]]))buffer->line[22][0]=1;
/*10*/}retrace_count=0;
/*11*/}rectfill(buffer,50,SCREEN_W,50+SCREEN_H,SCREEN_W,0);
/*12*/stretch_blit(buffer,buffer,(buffer->line[22][3]=0),0,12,22,0,50,192,352);
/*13*/while(buffer->line[22][3]++<4){rectfill(buffer,(buffer->line[22][1]+pd[buffer->line[22][7]][buffer->line[22][8]][buffer->line[22][3]-1][0])*16,50+(buffer->line[22][2]+pd[buffer->line[22][7]][buffer->line[22][8]][buffer->line[22][3]-1][1])*16,14+(buffer->line[22][1]+pd[buffer->line[22][7]][buffer->line[22][8]][buffer->line[22][3]-1][0])*16,50+14+(buffer->line[22][2]+pd[buffer->line[22][7]][buffer->line[22][8]][buffer->line[22][3]-1][1])*16,makecol(255,255,255));
/*14*/}blit(buffer,screen,0,50,0,0,SCREEN_W,SCREEN_H);
/*15*/}destroy_bitmap(buffer);
/*16*/return 0;
}END_OF_MAIN()