{ JOSEPH, ACM'95, hib s, de OK } const q: array[1..13] of longint=(2,7,5,30,169,441, 1872,7632,1740,93313,459901,1358657,2504881); var i,k,m: longint; s,jo,alap: string; Procedure KillNext; Begin i:=i+m-1; i:=i mod length(s); If i=0 then i:=length(s); Delete(s,i,1); If i>length(s) then i:=1; End; Begin Assign(input,'joseph.in'); Reset(input); Assign(output,'joseph.out'); Rewrite(output); Repeat ReadLn(k); If k<>0 then begin WriteLn(q[k]); end else if k>200 then begin s:=''; jo:=''; For i:=1 to 2*k do s:=s+chr(i); alap:=s; jo:=Copy(s,1,k); m:=k+1; Repeat i:=1; Repeat KillNext; Until length(s)=k; If s<>jo then begin Inc(m); s:=alap; End; Until s=jo; WriteLn(m); End; Until k=0; End.