#include<stdio.h>
int f[15];
bool jos(int ,int );
int main()
{
int i,j,k,m,n;
for(i=1;i<14;i++)
for(j=i;;j++)
if(jos(i,j))
{
f[i]=j;
break;
}
while(scanf("%d",&n),n)
printf("%d\n",f[n]);
return 0;
}
bool jos(int n,int m)//n代表每一边的人数,m代表所报的数
{
int start=0,end=n-1,killed;
int i,j;
bool flag=true;
for(i=2*n;i>n;i--)//从头进行模拟
{
killed=(m-1)%i;//i代表剩余的人数
if((killed<=end)&&(killed>=start))
{
flag=false;
break;
}
start=((start-m)%i+i)%i;//按照那个编号变化公式重新进行赋值
end=((end-m)%i+i)%i;//加上i,再%i的目的是保证它非零
}
return flag;
}
int f[15];
bool jos(int ,int );
int main()
{
int i,j,k,m,n;
for(i=1;i<14;i++)
for(j=i;;j++)
if(jos(i,j))
{
f[i]=j;
break;
}
while(scanf("%d",&n),n)
printf("%d\n",f[n]);
return 0;
}
bool jos(int n,int m)//n代表每一边的人数,m代表所报的数
{
int start=0,end=n-1,killed;
int i,j;
bool flag=true;
for(i=2*n;i>n;i--)//从头进行模拟
{
killed=(m-1)%i;//i代表剩余的人数
if((killed<=end)&&(killed>=start))
{
flag=false;
break;
}
start=((start-m)%i+i)%i;//按照那个编号变化公式重新进行赋值
end=((end-m)%i+i)%i;//加上i,再%i的目的是保证它非零
}
return flag;
}