program sud; type matrix=array[1..200,1..2] of integer; var f,g:text; lepes:array[1..200] of integer; a1,a2:array[1..100,1..100] of integer; a3,a4:matrix; k,n:integer; procedure beolvas; var i,j:integer; begin readln(f,n); i:=0; for i:=1 to n do begin for j:=1 to n do begin read(f,a1[i,j]); a2[i,j]:=a1[i,j]; end; readln(f); end; readln(f,k); for i:=1 to k do read(f,lepes[i]); end; procedure varial(i,j,db:integer); var ii,jj:integer; begin inc(db); if db<=k then begin ii:=i+lepes[db]; jj:=j+lepes[db]; if ii<=n then begin if a1[ii,j]<>a2[ii,j] then begin {ha nem egyenlo akkor mar volt ott tehat azzal folytatjuk ami nagyobb megoldast ad} if a2[i,j]+a1[ii,j]>a2[ii,j] then begin a2[ii,j]:=a1[ii,j]+a2[i,j]; a3[db,1]:=ii; a3[db,2]:=j; if (ii=n) and (j=n) then a4:=a3; varial(ii,j,db) end; end else begin a2[ii,j]:=a1[ii,j]+a2[i,j]; a3[db,1]:=ii; a3[db,2]:=j; if (ii=n) and (j=n) then a4:=a3; varial(ii,j,db) end; end; if jj<=n then begin if a1[i,jj]<>a2[i,jj] then begin {ha nem egyenlo akkor mar volt ott tehat azzal folytatjuk ami nagyobb megoldast} if a2[i,j]+a1[i,jj]>a2[i,jj] then begin a2[i,jj]:=a1[i,jj]+a2[i,j]; a3[db,1]:=i; a3[db,2]:=jj; if (i=n) and (jj=n) then a4:=a3; varial(i,jj,db) end; end else begin a2[i,jj]:=a1[i,jj]+a2[i,j]; a3[db,1]:=i; a3[db,2]:=jj; if (i=n) and (jj=n) then a4:=a3; varial(i,jj,db) end; end; end; end; procedure kiir; var i:integer; begin writeln(g,'1 1'); for i:=1 to k do writeln(g,a4[i,1],' ',a4[i,2]); end; begin assign(f,'sudest.in'); assign(g,'sudest.out'); reset(f); rewrite(g); beolvas; {beolvasom a matrixot es beolvasom a lepesek szamat!} varial(1,1,0); writeln(g,a2[n,n]); kiir; close(g); end.