uses vbios,utils,{$ifndef unix}crt{$else}xcrt{$endif};

type
 tp=array[0..3,0..63,0..7] of byte;
 tph=array[0..3,0..31,0..3] of byte;

var
 buf:array[0..4095] of byte;
 p:tp;
 ph,
 ph2:tph;

 e:file;
 f:file of tp;
 g:file of tph;

 s:string;
 i,j,n,k,l,m,x,z:word;

procedure showp(x,y:word);
var
 i,j,o:word;
begin
 if n<=312 then begin
  o:=y*80+x div 8;
  for i:=0 to 3 do begin
   port[$3c4]:=2;
   port[$3c5]:=1 shl i;
   for j:=0 to 63
   do move(p[i,j],mem[$a000:o+j*80],8);
  end;
  port[$3c4]:=2;
  port[$3c5]:=$f;
 end else beep;
end;

procedure showph(x,y:word);
var
 i,j,o:word;
begin
 if n<=312 then begin
  o:=y*80+x div 8;
  for i:=0 to 3 do begin
   port[$3c4]:=2;
   port[$3c5]:=1 shl i;
   for j:=0 to 31
   do move(ph[i,j],mem[$a000:o+j*80],4);
  end;
  port[$3c4]:=2;
  port[$3c5]:=$f;
 end else beep;
end;

procedure showph2(x,y:word);
var
 i,j,o:word;
begin
 if n<=312 then begin
  o:=y*80+x div 8;
  for i:=0 to 3 do begin
   port[$3c4]:=2;
   port[$3c5]:=1 shl i;
   for j:=0 to 31
   do move(ph2[i,j],mem[$a000:o+j*80],4);
  end;
  port[$3c4]:=2;
  port[$3c5]:=$f;
 end else beep;
end;

begin
 assign(f,s+'graphic.DBG');
 assign(g,s+'graphic.DBH');
 setvideomode($12);
 reset(f);
 reset(g);
 fillchar(p,sizeof(p),0);
 for z:=0 to 312 do begin
  read(f,p);
  for n:=0 to 3 do for i:=0 to 31 do for j:=0 to 3 do begin
   k:=((p[n,i*2  ,j*2])shl 8) or ((p[n,i*2  ,j*2+1]));
   l:=((p[n,i*2+1,j*2])shl 8) or ((p[n,i*2+1,j*2+1]));
   m:=0;
   for x:=0 to 7
   do if (k shr(2*x))and 1+(k shr(2*x+1))and 1+
	 (l shr(2*x))and 1+(l shr(2*x+1))and 1+1>2
   then m:=m or 1 shl x;
   ph[n,i,j]:=m;
  end;
  for n:=0 to 3 do for i:=0 to 31 do for j:=0 to 3 do begin
   randseed:=0;
   k:=((p[n,i*2  ,j*2])shl 8) or ((p[n,i*2  ,j*2+1]));
   l:=((p[n,i*2+1,j*2])shl 8) or ((p[n,i*2+1,j*2+1]));
   m:=0;
   for x:=0 to 7
   do if (k shr(2*x))and 1+(k shr(2*x+1))and 1+
	 (l shr(2*x))and 1+(l shr(2*x+1))and 1+random(2)>2
   then m:=m or 1 shl x;
   ph2[n,i,j]:=m;
  end;
  showp(0,0);
  showph(0,70);
  showph2(40,70);
  case readkey of
   '1':write(g,ph);
   #27:exit;
  else
   write(g,ph2);
  end;
 end;
 setvideomode(3);
 writeln('OK');
end.