[an error occurred while processing this directive]
Listing CARDS.PAS 
Program Cards; 
const max=1000; 
var n,s:Integer; 
f:Text; 
p,q:array[1..max] of integer; 
procedure Citire; 
var i:Integer; 
begin 
Assign(f,'CARDS.IN'); Reset(f); 
Readln(f,n,s); 
for i:=1 to n do Readln(f,q[i]); 
Close(f) 
end; 
procedure Solutie; 
var i,j:Integer; t,u:Longint; 
temp:array[1..max] of Integer; 
begin 
t:=1; 
for i:=1 to s do t:=(t+t) mod n; 
u:=1; while (u*t mod n) <>1 do Inc(u); 
for i:=1 to n do p[i]:=q[i]; 
for i:=2 to u do 
begin 
for j:=1 to n do temp[j]:=q[p[j]]; 
for j:=1 to n do p[j]:=temp[j] 
end 
end; 
procedure Scriere; 
var i:Word; 
begin 
Assign(f,'CARDS.OUT'); Rewrite(f); 
for i:=1 to n do Writeln(f,p[i]); 
Close(f) 
end; 
Begin 
Citire; 
Solutie; 
Scriere 
End.