program tetris;
{ constraints }
const
MAXN = 500;
{ input data }
var
N, M, i, j, nbpiece, ans : longint;
table : array[0..MAXN-1,0..MAXN-1] of longint;
begin
{
uncomment the following lines if you want to read/write from files
assign(input, 'input.txt'); reset(input);
assign(output, 'output.txt'); rewrite(output);
}
{ read numbers N and M in a single line }
readln(N, M);
for i:=0 to N-1 do
for j:=0 to M-1 do
table[i,j]:=0;
if (N mod 2 = 0) and (M mod 2 = 0) then
begin
nbpiece := 0;
for i := 0 to N-1 do
for j := 0 to M-1 do
begin
table[2*i][2*j]:= nbpiece;
table[2*i + 1][2*j] := nbpiece;
table[2*i][2*j + 1] := nbpiece;
table[2*i + 1][2*j + 1] := nbpiece;
if j<M div 2 then inc(nbpiece);
end;
ans:=(N div 2) *(M div 2);
end
else
if N mod 4 = 0 then
begin
nbpiece:= 0;
for j := 0 to M-1 do
for i := 0 to N-1 do
begin
table[i][j] := nbpiece;
if i mod 4 = 3 then inc(nbpiece);
end;
ans:=(N div 4) * M ;
end
else
if M mod 4 = 0 then
begin
nbpiece:= 0;
for i := 0 to N-1 do
for j := 0 to M-1 do
begin
table[i][j] := nbpiece;
if j mod 4 = 3 then inc(nbpiece);
end;
ans:=N *(M div 4)
end
else ans:=-1;
writeln(ans);
if ans <>-1 then
for i:=0 to N-1 do
begin
for j:=0 to M-1 do
write(table[i][j],' ');
writeln;
end;
end.
cHJvZ3JhbSB0ZXRyaXM7CnsgY29uc3RyYWludHMgfQpjb25zdAogICAgTUFYTiA9IDUwMDsKCnsgaW5wdXQgZGF0YSB9CnZhcgogICAgTiwgTSwgaSwgaiwgbmJwaWVjZSwgYW5zICA6IGxvbmdpbnQ7CiAgICB0YWJsZSAgICAgICA6IGFycmF5WzAuLk1BWE4tMSwwLi5NQVhOLTFdIG9mIGxvbmdpbnQ7CgpiZWdpbgp7CiAgICB1bmNvbW1lbnQgdGhlIGZvbGxvd2luZyBsaW5lcyBpZiB5b3Ugd2FudCB0byByZWFkL3dyaXRlIGZyb20gZmlsZXMKICAgIGFzc2lnbihpbnB1dCwgICdpbnB1dC50eHQnKTsgIHJlc2V0KGlucHV0KTsKICAgIGFzc2lnbihvdXRwdXQsICdvdXRwdXQudHh0Jyk7IHJld3JpdGUob3V0cHV0KTsKfQoKICAgIHsgcmVhZCBudW1iZXJzIE4gIGFuZCBNIGluIGEgc2luZ2xlIGxpbmUgfQogICAgcmVhZGxuKE4sIE0pOwogICAgZm9yIGk6PTAgdG8gTi0xIGRvCiAgICAgIGZvciBqOj0wIHRvIE0tMSBkbwogICAgICAgICAgICAgICAgIHRhYmxlW2ksal06PTA7CiAgICAKICAgIGlmIChOIG1vZCAyID0gMCkgYW5kIChNIG1vZCAyID0gMCkgIHRoZW4KICAgICAgICAgICAgICBiZWdpbgogICAgICAgICAgICAgICAgbmJwaWVjZSA6PSAwOwogICAgICAgICAgICAgICAgZm9yIGkgOj0gMCB0byBOLTEgIGRvIAogICAgICAgICAgICAgICAgICAgICBmb3IgaiA6PSAwIHRvIE0tMSAgZG8KICAgICAgICAgICAgICAgICAgICAgICAgICBiZWdpbgogICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZVsyKmldWzIqal06PSBuYnBpZWNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZVsyKmkgKyAxXVsyKmpdIDo9IG5icGllY2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlWzIqaV1bMipqICsgMV0gOj0gbmJwaWVjZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVbMippICsgMV1bMipqICsgMV0gOj0gbmJwaWVjZTsgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBqPE0gZGl2IDIgdGhlbiBpbmMobmJwaWVjZSk7IAogICAgICAgICAgICAgICAgICAgICAgICAgZW5kOyAKICAgICAgICAgICAgICAgIGFuczo9KE4gZGl2IDIpICooTSBkaXYgMik7ICAgICAgICAgCiAgICAgICAgICAgICAgZW5kCiAgICAgICAgIGVsc2UKICAgICAgICAgIAogICAgICAgICAgICAgIGlmIE4gbW9kIDQgPSAwIHRoZW4KICAgICAgICAgICAgICAgICAgYmVnaW4KICAgICAgICAgICAgICAgICAgIG5icGllY2U6PSAwOwogICAgICAgICAgICAgICAgICAgZm9yICBqIDo9IDAgdG8gTS0xIGRvCiAgICAgICAgICAgICAgICAgICAgICBmb3IgaSA6PSAwICB0byBOLTEgZG8KICAgICAgICAgICAgICAgICAgICAgICAgIGJlZ2luCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlW2ldW2pdIDo9IG5icGllY2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGkgbW9kIDQgPSAzIHRoZW4gaW5jKG5icGllY2UpOwogICAgICAgICAgICAgICAgICAgICAgICAgIGVuZDsKICAgICAgICAgICAgICAgICAgIGFuczo9KE4gZGl2IDQpICogTSA7ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgZW5kICAgICAgICAgICAKICAgICAgICAgZWxzZSAKICAgICAgICAgICAgICBpZiBNIG1vZCA0ID0gMCB0aGVuCiAgICAgICAgICAgICAgICAgIGJlZ2luCiAgICAgICAgICAgICAgICAgICAgbmJwaWVjZTo9IDA7CiAgICAgICAgICAgICAgICAgICAgZm9yIGkgOj0gMCAgdG8gTi0xIGRvCiAgICAgICAgICAgICAgICAgICAgICBmb3IgIGogOj0gMCB0byBNLTEgZG8KICAgICAgICAgICAgICAgICAgICAgICBiZWdpbgogICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVbaV1bal0gOj0gbmJwaWVjZTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGogbW9kIDQgPSAzIHRoZW4gaW5jKG5icGllY2UpOwogICAgICAgICAgICAgICAgICAgICAgICBlbmQ7CiAgICAgICAgICAgICAgICAgICBhbnM6PU4gKihNIGRpdiA0KSAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgZW5kCiAgICAgICAgIGVsc2UgYW5zOj0tMTsKICAgIHdyaXRlbG4oYW5zKTsKICAgIGlmIGFucyA8Pi0xICB0aGVuICAgCiAgICAgICAgICBmb3IgaTo9MCB0byBOLTEgZG8KICAgICAgICAgICAgIGJlZ2luCiAgICAgICAgICAgICAgIGZvciBqOj0wIHRvIE0tMSBkbwogICAgICAgICAgICAgICAgd3JpdGUodGFibGVbaV1bal0sJyAnKTsKICAgICAgICAgICAgICAgIHdyaXRlbG47CiAgICAgICAgICAgIGVuZDsgICAgCmVuZC4K