#include<dos.h>
#include<time.h>
#include<stdio.h>
#include<conio.h>
char far*q=(char far*)0xA0000000;
char B[8][8],D[1000];
int Q[1001]={61752};
int M=3,a=17,c=60;
int E,b,d,g,n,v,w,x,y;
void muro(f,F){
D[f]=D[f-1]=F;
for(b=Q[f],v=6+!E;v--;b+=312-!E*7)
for(w=8+!E*7;w--;*(q+b++)=F)
if(E) *(q+b-32)=!F;
}
int main(){
_AX=0x13;
geninterrupt(0x10);
clock_t T;
for(v=4;v--;d+=v<3)
for(w=d;w<4;w++)
B[7-v][7-w]=B[7-v][w]=B[v][7-w]=B[v][w]=15;
for(y=25;y--;Q[n]-=2240)
for(x=40;x--;Q[++n]=Q[n]-8)
if(y>3&&y<12&&x%2<1) muro(n,9-y%2*6);
Inicio:
T=clock();
do{
while(kbhit()) E=getch();
if(E==27&&getch()==E) return 0;
if(E==77&&a) muro(--a,1);
if(E==75&&a<36) muro(a++,0);
M+=(E=='-'&&M<5)-(E=='+'&&M>1);
}while(E=clock()-T<M);
x=c%40<1||c%40>38?-x:x;
y=c>959?1:y;
if(c<80) d=c%40-a,
y=d<4+(x>0)&&d>=-(x<0)?-1:0,
x=d>0&&d<3?0:c>40&&c<79?(d<1)-(d>2):x;
else{
if(d=D[n=c-x]) muro(n-n%2+1,0);
if(D[n=c-40*y]||D[n-=x]*!d&&++d)
muro(n-n%2+1,0),
y=-y;
x=d?-x:x;
}
while(!y) y-=getch()==13;
for(g=2;g--;c-=g?40*y+x:0)
for(b=Q[c],v=8;v--;b+=312)
for(w=8;w--;*(q+b++)=B[v][w]*!g);
goto Inicio;
}