var
 a:array[0..501,0..501]of longint;
 v:array[0..501]of boolean;
 vv:array[0..501,0..501]of boolean;
 l,r:array[1..500]of integer;
 n,i,j,k,m,ans,sum:longint;
procedure bianli(i,j:integer);
begin
 vv[i,j]:=false;
 if i=n then begin v[j]:=true; if j<l[k] then
  l[k]:=j;if j>r[k] then r[k]:=j;end;
 if (a[i,j]>a[i,j-1])and(vv[i,j-1]) then bianli(i,j-1);
 if (a[i,j]>a[i,j+1])and(vv[i,j+1]) then bianli(i,j+1);
 if (a[i,j]>a[i+1,j])and(vv[i+1,j]) then bianli(i+1,j);
 if (a[i,j]>a[i-1,j])and(vv[i-1,j]) then bianli(i-1,j);
end;
begin
 read(n,m);
 for i:=1 to m do l[i]:=m+1;
 for i:=1 to n do
  for j:=1 to m do
   read(a[i,j]);
 for k:=1 to m do
  if (a[1,k]>=a[1,k-1])and(a[1,k]>=a[1,k+1]) then
   begin
    for i:=1 to n do for j:=1 to m do vv[i,j]:=true; bianli(1,k);
   end;
 for i:=1 to m do if not(v[i]) then  inc(sum);
 if sum>0 then
  begin  writeln('0');writeln(sum);halt;end;
 i:=1;k:=0;
 while i<=m do
  begin
   for j:=1 to m do
    if(l[j]<=i)and(r[j]>k) then k:=r[j];
    i:=k+1;
    inc(sum);
  end;
 writeln('1');
 writeln(sum);
end.
/**************************************************************
	Problem: 2299
	User: admin
	Language: Pascal
	Result: Wrong Answer
****************************************************************/