program BoardP; var f:text; board: array [1..8,1..8] of char; i:integer; j:integer; hod,chuzh:char; outHod:array[1..96] of string[5]; num:integer; function GetNum(_i,_j:integer):integer; var res:integer; x,y:integer; begin res:=0; y:=i+_i; x:=j+_j; while (x<9)and(x>0)and(y<9)and(y>0) do begin if board[y,x]<>'.' then inc(res); x:=x+_j; y:=y+_i; end; y:=i-_i; x:=j-_j; while (x<9)and(x>0)and(y<9)and(y>0) do begin if board[y,x]<>'.' then inc(res); x:=x-_j; y:=y-_i; end; GetNum:=res+1; end; function _IToA(i:integer):string; begin _IToA:=Chr(Ord('A')-1+i); end; function _IToS(i:integer):string; var s:string; begin Str(i,s); _IToS:=s; end; procedure ValidHod(_i,_j,n:integer); var x,y:integer; loop:integer; oblom:boolean; begin x:=j; y:=i; oblom:=false; loop:=0; repeat inc(loop); inc(x,_j); inc(y,_i); if (x<1)or(x>8)or(y<1)or(y>8) then oblom:=true; if (board[y,x]=chuzh)and(loopoutHod[j+1] then begin temp:=outHod[j]; outHod[j]:=outHod[j+1]; outHod[j+1]:=temp end end; procedure PrintHod; begin if num>0 then for i:=1 to num do WriteLn(outHod[i]) else WriteLn('GAME OVER'); WriteLn; end; begin Assign(f,'board.in'); Reset(f); while not EoF(f) do begin num:=0; for i:=1 to 8 do begin for j:=1 to 8 do Read(f,board[i,j]); ReadLn(f); end; ReadLn(f,hod); if hod='O' then chuzh:='X' else chuzh:='O'; for i:=1 to 8 do for j:=1 to 8 do if board[i,j]=hod then Process; SortHod; PrintHod; end; Close(f); end.