/*K个石块,L最大取值。问L取什么样的值,可以保证第二个选手赢1 ~ L 必胜L+1 必败L+2 ~ L+L+1 必胜L+L+2 必败L+L+3 必胜 L+L+2+L必胜L+L+L+3 必败4L+45L+5通过找规律发现,必败态的条件是满足 tL+t,所以我们可以对K找因子,找到最小的那个L就可以了*/#includeint K,L;#define min(x,y) ((x)<(y)?(x):(y))int main(){ while(scanf("%d",&K)==1) { int ans = 1000000000; for(int i=1;i*i<=K;i++) { if( K%i==0 ) { if( K/i-1>=2) ans = min(ans,K/i-1); if( i-1>=2 ) ans=min(ans,i-1); } } printf("%d\n",ans); } return 0;}