program zabky; const MAX=100; var zabky: array[1..MAX+1] of integer; { pozice žabek, 0 = prázdné místo } volno: integer; n: integer; { počet žabek } procedure vypis; var i:integer; begin for i:=1 to n+1 do begin if zabky[i]=0 then write('*':2) else write(zabky[i]:2); if i<=n then write(' ') else writeln; end end; procedure init; var i:integer; begin for i:=1 to n do zabky[i]:=i; zabky[n+1]:=0; volno:=n+1; vypis; end; procedure skok( odkud: integer); begin zabky[volno]:=zabky[odkud]; zabky[odkud]:=0; volno:=odkud; vypis; end; var dozadu: boolean; faze: integer; pozice: integer; begin readln(n); init; if n=1 then exit; if n=2 then begin skok(1); exit; end; dozadu:=true; for faze:=1 to n do if dozadu then begin pozice:=volno-2; repeat skok(pozice); pozice:=pozice-2; until pozice<1; if pozice=0 then skok(1) else skok(2); dozadu:=false end else begin pozice:=volno+2; repeat skok(pozice); pozice:=pozice+2; until pozice>n+1; skok(n+1); dozadu:=true end end.