program solitario;
uses Math;
var N,M,i,j, soluzione, con_x, senza_x, nuovariga, nuovacolonna:longint;
griglia:array[1..10,1..10] of longint;
function posso(r, c: longint): boolean;
begin
(*tris orizzontale*)
if (c-2>0) and (griglia[r][c-2]=1) and (griglia[r][c-1]=1) then posso:=false
(*tris orizzontale*)
else if (r-2>0) and (griglia[r-2][c]=1) and (griglia[r-1][c]=1) then posso:=false
(* Tris diagonale in alto a sx*)
else if (r-2>0 ) and (c-2>0) and (griglia[r-2][c-2]=1) and (griglia[r-1][c-1]=1) then posso:=false
(* Tris diagonale in alto a dx*)
else if (r-2>0) and (c+2<M) and (griglia[r-2][c+2]=1) and (griglia[r-1][c+1]=1) then posso:=false
else posso := true;
end;
function gioca (riga, colonna:longint):longint;
begin
while (riga <=N) do
begin
(*Se posso, metto la X*)
if posso (riga,colonna)=true then
begin
griglia[riga][colonna]:=1;
con_x:=con_x+1;
end;
if colonna+1=M then riga:=riga+1;
colonna:= (colonna +1) mod M;
end;
(*Ritorno la soluzione migliore*)
soluzione:= con_x;
end;
begin
readln(N,M);
for i:=1 to N do
for j:=1 to M do griglia[i,j]:=-1;
griglia[1,1]:=1;nuovariga:=1; con_x:=0;
gioca(1,1);
writeln(soluzione);
for i:=1 to N do begin
for j:=1 to M do write(griglia[i,j],' '); writeln; end;
end.
cHJvZ3JhbSBzb2xpdGFyaW87CnVzZXMgTWF0aDsKdmFyIE4sTSxpLGosIHNvbHV6aW9uZSwgY29uX3gsIHNlbnphX3gsIG51b3ZhcmlnYSwgbnVvdmFjb2xvbm5hOmxvbmdpbnQ7CiAgICBncmlnbGlhOmFycmF5WzEuLjEwLDEuLjEwXSBvZiBsb25naW50OwoKZnVuY3Rpb24gcG9zc28ociwgYzogbG9uZ2ludCk6IGJvb2xlYW47CmJlZ2luCiAgICAgICgqdHJpcyBvcml6em9udGFsZSopCiAgIGlmIChjLTI+MCkgYW5kIChncmlnbGlhW3JdW2MtMl09MSkgYW5kIChncmlnbGlhW3JdW2MtMV09MSkgdGhlbiBwb3Nzbzo9ZmFsc2UKICAgICAgKCp0cmlzIG9yaXp6b250YWxlKikKICAgICAgZWxzZSAgaWYgKHItMj4wKSBhbmQgKGdyaWdsaWFbci0yXVtjXT0xKSBhbmQgKGdyaWdsaWFbci0xXVtjXT0xKSB0aGVuIHBvc3NvOj1mYWxzZQogICAgKCogVHJpcyBkaWFnb25hbGUgaW4gYWx0byBhIHN4KikKICAgICAgZWxzZSBpZiAoci0yPjAgKSBhbmQgKGMtMj4wKSBhbmQgKGdyaWdsaWFbci0yXVtjLTJdPTEpIGFuZCAoZ3JpZ2xpYVtyLTFdW2MtMV09MSkgdGhlbiBwb3Nzbzo9ZmFsc2UKICAgICgqIFRyaXMgZGlhZ29uYWxlIGluIGFsdG8gYSBkeCopCiAgICAgIGVsc2UgaWYgKHItMj4wKSBhbmQgKGMrMjxNKSBhbmQgKGdyaWdsaWFbci0yXVtjKzJdPTEpIGFuZCAoZ3JpZ2xpYVtyLTFdW2MrMV09MSkgdGhlbiBwb3Nzbzo9ZmFsc2UKICAgICAgICAgIGVsc2UgICBwb3NzbyA6PSB0cnVlOwplbmQ7ICAgIApmdW5jdGlvbiBnaW9jYSAocmlnYSwgY29sb25uYTpsb25naW50KTpsb25naW50OwogIGJlZ2luCiAgICB3aGlsZSAocmlnYSA8PU4pICBkbwogICAgICAgICAgICAgICAgIGJlZ2luCiAgICAgICAgICAgICAgICAgICAoKlNlIHBvc3NvLCBtZXR0byBsYSBYKikKICAgICAgICAgICAgICAgICAgIGlmIHBvc3NvIChyaWdhLGNvbG9ubmEpPXRydWUgdGhlbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW4gCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncmlnbGlhW3JpZ2FdW2NvbG9ubmFdOj0xOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uX3g6PWNvbl94KzE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQ7CiAgICAgICAgICAgICAgICAgICAgaWYgY29sb25uYSsxPU0gdGhlbiByaWdhOj1yaWdhKzE7CiAgICAgICAgICAgICAgICAgICAgY29sb25uYTo9IChjb2xvbm5hICsxKSBtb2QgTTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBlbmQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICgqUml0b3JubyBsYSBzb2x1emlvbmUgbWlnbGlvcmUqKQogICAgICAgICAgICAgICAgICAgIHNvbHV6aW9uZTo9IGNvbl94OwplbmQ7CmJlZ2luCglyZWFkbG4oTixNKTsKCWZvciBpOj0xIHRvIE4gZG8KCSAgICAgICAgICAgIGZvciBqOj0xIHRvIE0gZG8gZ3JpZ2xpYVtpLGpdOj0tMTsKCWdyaWdsaWFbMSwxXTo9MTtudW92YXJpZ2E6PTE7ICBjb25feDo9MDsgICAgICAgICAgCglnaW9jYSgxLDEpOwoJd3JpdGVsbihzb2x1emlvbmUpOwoJZm9yIGk6PTEgdG8gTiBkbyBiZWdpbgoJICAgICAgICAgICAgZm9yIGo6PTEgdG8gTSBkbyB3cml0ZShncmlnbGlhW2ksal0sJyAnKTsgd3JpdGVsbjsgZW5kOwplbmQuCg==