uses Math;
const
SIZE = 100;
var
mtx : array [0..SIZE, 0..SIZE] of Integer;
function Value(x, y : Integer) : Integer;
var
cnt : Integer;
begin
cnt := 0;
if mtx[x-1, y] = 1 then begin
mtx[x-1, y] := 0;
Inc(cnt, Value(x-1, y)+1)
end;
if mtx[x+1, y] = 1 then begin
mtx[x+1, y] := 0;
Inc(cnt, Value(x+1, y)+1)
end;
if mtx[x, y-1] = 1 then begin
mtx[x, y-1] := 0;
Inc(cnt, Value(x, y-1)+1)
end;
if mtx[x, y+1] = 1 then begin
mtx[x, y+1] := 0;
Inc(cnt, Value(x, y+1)+1)
end;
Value := cnt
end;
var
a : array [0..SIZE] of Integer;
n, m, i, j : Integer;
begin
ReadLn(n, m);
for i := 1 to SIZE do
a[i] := 0;
for i := 1 to n do
for j := 1 to m do
Read(mtx[i,j]);
for i := 0 to n+1 do begin
mtx[i, 0] := -1; mtx[0, i] := -1;
mtx[i, n+1] := -1; mtx[n+1, i] := -1
end;
for i := 1 to n do
for j := 1 to m do
if mtx[i, j] = 1 then begin
mtx[i, j] := 0;
Inc(a[Value(i, j)+1]);
end;
for i := 1 to Max(n, m) do
if a[i] <> 0 then
WriteLn(i, ' ', a[i])
end.
dXNlcyBNYXRoOwpjb25zdAogICAgICAgIFNJWkUgPSAxMDA7CnZhcgogICAgICAgIG10eCA6IGFycmF5IFswLi5TSVpFLCAwLi5TSVpFXSBvZiBJbnRlZ2VyOwpmdW5jdGlvbiBWYWx1ZSh4LCB5IDogSW50ZWdlcikgOiBJbnRlZ2VyOwp2YXIKCWNudCA6IEludGVnZXI7CgpiZWdpbgoJY250IDo9IDA7CgoJaWYgbXR4W3gtMSwgeV0gPSAxIHRoZW4gYmVnaW4KCQltdHhbeC0xLCB5XSA6PSAwOwoJCUluYyhjbnQsIFZhbHVlKHgtMSwgeSkrMSkKCWVuZDsKCglpZiBtdHhbeCsxLCB5XSA9IDEgdGhlbiBiZWdpbgoJCW10eFt4KzEsIHldIDo9IDA7CgkJSW5jKGNudCwgVmFsdWUoeCsxLCB5KSsxKQoJZW5kOwoKCWlmIG10eFt4LCB5LTFdID0gMSB0aGVuIGJlZ2luCgkJbXR4W3gsIHktMV0gOj0gMDsKCQlJbmMoY250LCBWYWx1ZSh4LCB5LTEpKzEpCgllbmQ7CgoJaWYgbXR4W3gsIHkrMV0gPSAxIHRoZW4gYmVnaW4KCQltdHhbeCwgeSsxXSA6PSAwOwoJCUluYyhjbnQsIFZhbHVlKHgsIHkrMSkrMSkKCWVuZDsKCglWYWx1ZSA6PSBjbnQKZW5kOwoKdmFyCglhIDogYXJyYXkgWzAuLlNJWkVdIG9mIEludGVnZXI7CgluLCBtLCBpLCBqIDogSW50ZWdlcjsKCmJlZ2luCiAgICAgICAgUmVhZExuKG4sIG0pOwoKCiAgICAgICAgZm9yIGkgOj0gMSB0byBTSVpFIGRvCgkJYVtpXSA6PSAwOwoKCWZvciBpIDo9IDEgdG8gbiBkbwoJCWZvciBqIDo9IDEgdG8gbSBkbwoJCQlSZWFkKG10eFtpLGpdKTsKCglmb3IgaSA6PSAwIHRvIG4rMSBkbyBiZWdpbgoJCW10eFtpLCAwXSA6PSAtMTsgbXR4WzAsIGldIDo9IC0xOwoJCW10eFtpLCBuKzFdIDo9IC0xOyBtdHhbbisxLCBpXSA6PSAtMQoJZW5kOwoKCWZvciBpIDo9IDEgdG8gbiBkbwoJCWZvciBqIDo9IDEgdG8gbSBkbwoJCQlpZiBtdHhbaSwgal0gPSAxIHRoZW4gYmVnaW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdHhbaSwgal0gOj0gMDsKCQkJCUluYyhhW1ZhbHVlKGksIGopKzFdKTsKICAgICAgICAgICAgICAgICAgICAgICAgZW5kOwoKCWZvciBpIDo9IDEgdG8gTWF4KG4sIG0pIGRvCgkJaWYgYVtpXSA8PiAwIHRoZW4KCQkJV3JpdGVMbihpLCAnICcsIGFbaV0pCmVuZC4K