const max=1000; type sir=array[1..max]of word; procedure cit(var n:word;var x:sir); var f:text; i:word; begin assign(f,'soldati.in'); reset(f); readln(f,n); for i:=1 to n do read(f,x[i]); close(f) end; procedure transfer(i,j:word;var n:word;var x:sir;var m:word;var y:sir); var k:word; begin for k:=i to j do y[k-i+1]:=x[k]; for k:=j+1 to n do x[k-(j-i+1)]:=x[k]; m:=j-i+1; n:=n-m end; function gasesc(i:word;r:sir;var n:word;var x:sir;var m:word;var y:sir):boolean; var j:word; begin gasesc:=false; for j:=1 to i-1 do if r[i]=r[j] then begin transfer(j+1,i,n,x,m,y);gasesc:=true;exit end end; procedure aleg(var n:word;var x:sir;var m:word;var y:sir); var r:sir; s:longint; i:word; begin s:=0; for i:=1 to n do begin s:=s+x[i]; r[i]:=s mod n; if r[i] mod n=0 then begin transfer(1,i,n,x,m,y);exit end else if gasesc(i,r,n,x,m,y) then exit end end; var f:text; procedure tip(n:word;x:sir); var i:word; begin for i:=1 to n do write(f,x[i],' '); writeln(f) end; var n,m:word; x,y:sir; begin cit(n,x); assign(f,'soldati.out'); rewrite(f); repeat aleg(n,x,m,y); tip(m,y); until n=0; close(f) end.