program mn;
uses crt;
var a:array[1..100,1..100]of integer;
n,i,j,min,m,f:integer;
procedure ud(var k:integer);
var z,g:integer;
begin
for z:=1 to n do
for g:=k to m do
a[z,g]:=a[z,g+1];
dec(m);
end;

BEGIN
ClrScr;
Write('N:');
readln(n);
randomize;
for i:=n downto 1 do
for j:=n downto 1 do
a[i,j]:=random(40);
for i:=1 to n do
begin
for j:=1 to n do
write(a[i,j],' ');
writeln;
end;
min:=a[1,1];
for i:=1 to n do
for j:=1 to n do
if a[i,j] then min:=a[i,j];
i:=1;m:=n;
while i<=n do
begin
f:=0;
for j:=1 to m do
if a[i,j]=min
then f:=j;

if f<>0
then begin
ud(f);
i:=1;
end
else inc(i);
end;
writeln;
for i:=1 to n do
begin
for j:=1 to m do
write(a[i,j],' ');
writeln;
end;

readln;
END.