program ex(input,output); var i,j,k,m,n,best:integer; a:array[1..100] of integer; d:array[1..100,1..100] of integer; store:array[1..100,1..100] of integer; available: array[1..100] of integer; forbid : array[1..100] of integer; count:integer; function out : integer; var i:integer; var c: integer; begin c:=0; for i:=1 to n do write(a[i]:2); readln; {riteln;} for i:=1 to n do c:=c+d[a[i],a[i+1]]; c:=c+d[a[n], a[1]]; {writeln('c=',c, ' best= ', best);} if ca[k-1]) then begin temp:=a[i]; j:=i end; minimum:=j; end; procedure save(k:integer); var i:integer; begin for i:=k to n do store[k,i]:=a[i]; end; procedure recover(k:integer); var i:integer; begin for i:=k to n do a[i]:=store[k,i]; end; procedure reverse(k:integer); var i:integer; begin for i:=k to (k+n-1) div 2 do swap(i, n-i+k); end; procedure perm(k, partial:integer); var i,j, cost:integer; begin if k<=n-1 then for i:=k to n do begin cost:=eval(k); {writeln('cost ',cost);} save(k); if costn then begin { if cost