program poisk_min; {$APPTYPE CONSOLE} var a:array[1..100,1..100] of integer; nmin,min,i,j,k,l,n,s:integer; c:array [1..100]of integer; f1,f2:text; function f(nn,vv:integer):boolean; var pr:boolean; i:integer; begin pr:=true; for i:=1 to nn do if vv=c[i] then pr:=false; f:=pr; end; begin assign(f1,'graph.dat');reset(f1); assign(f2,'graph.sol');rewrite(f2); readln(f1,n); for i:=1 to n do for j:=1 to n do read(f1,a[i,j]); close(f1); i:=1;c[i]:=1; while i<=n do begin min:=maxint; for j:=1 to n do if (a[c[i],j]c[i])and (f(i,j)) then begin min:=a[c[i],j];nmin:=j;end; i:=i+1; c[i]:=nmin; end; for i:=1 to n-1 do s:=s+a[c[i],c[i+1]]; s:=s+a[c[n],c[1]]; for i:=1 to n-1 do write(f2,c[i],' ' ); writeln(f2,c[n] ); writeln(f2,s); close(f2); end.