var n,m:integer; a:array[1..1000,1..1000]of longint; b:array[0..1000,0..1000]of boolean; vizitate: longint; i, j:integer; begin read(n,m); for i:=1 to n do begin for j:=1 to m do read(a[i,j]); end; for i:=1 to n do begin for j:=1 to m do b[i,j]:=false; end; i := 1; j := 1; b[1,m+1]:=true; b[n+1,m]:=true; var n,m:integer; a:array[1..1000,1..1000]of longint; b:array[0..1000,0..1000]of boolean; vizitate: longint; i, j, x, y:integer; begin read(n,m); for i:=1 to n do begin for j:=1 to m do read(a[i,j]); end; for i:=1 to n do begin for j:=1 to m do b[i,j]:=false; end; i := 1; j := 1; b[1,m+1]:=true; b[n+1,m]:=true; b[n,0]:=true; while vizitate < n * m do begin {parcurgere stanga->dreapta} while not b[i,j] do begin write(a[i,j],' '); b[i,j]:=true; if not b[i, j+1] then inc(j); inc(vizitate); end; inc(i); { writeln('am ajuns in coordonatele (',i,',',j,')'); } {for x := 1 to n do begin for y := 1 to m do if b[x,y] then write('1 ') else write('0 '); writeln; end;} while not b[i,j] do begin write(a[i,j],' '); b[i,j]:=true; if not b[i+1, j] then inc(i); inc(vizitate); end; j := j-1; while not b[i,j] do begin write(a[i,j],' '); b[i,j]:=true; if not b[i, j-1] then j:=j-1; inc(vizitate); end; i := i-1; while not b[i,j] do begin write(a[i,j],' '); b[i,j]:=true; if not b[i-1, j] then i:=i-1; inc(vizitate); end; inc(j); end; writeln; end.