预处理打表
#include<bits/stdc++.h>
using namespace std;
int main()
{
long long i,j,k,kk,g,ans[20],tmp,flag,last,used[30],now;
for(i=1;i<=13;i++)
{
ans[i]=i+1;
for(;;)
{
now=1;
flag=1;
memset(used,0,sizeof(used));
for(j=1;j<=i&&flag;j++)
{
tmp=(ans[i]-1)%(i+i-j+1);
for(k=now;;k=(k+1>i+i?1:k+1))
{
if(used[k])
continue;
if(tmp==0)
{
used[k]=1;
if(k<=i)
{
flag=0;
break;
}
for(kk=k;;kk=(kk+1>i+i?1:kk+1))
{
if(!used[kk])
break;
}
now=kk;
break;
}
else
tmp--;
}
}
if(flag)
break;
ans[i]++;
}
}
while(~scanf("%lld",&g)&&g)
{
printf("%lld\n",ans[g]);
}
}