Эта задача решается с конечного разложения в обратном порядке (при этом
перекладывать надо сверху вниз). Пусть есть колода с требуемым в условии
задачи разложением карт. Легко заметить, что перекладывание части колоды
из k карт равнозначно k перекладываниям по одной карте. Поэтому надо
вычислить общее количество перекладываемых карт, а после этого легко
выписать и искомое разложение в явном виде.
var
n, k : integer;
p : longint;
begin
assign(input,'input.txt'); reset(input);
read(n); p:=0;
for k:=2 to n do
p:=p+round(1.0*n/k);
while p>=n do p:=p-n;
assign(output,'output.txt'); rewrite(output);
for k:=p downto 1 do write(k,' ');
for k:=n downto p+2 do write(k,' ');
write(p+1)
end.