#include int table[100000]; int calc(int i) { if(table[i]==-1) { if(i%2==0) table[i]=calc(i/2); else table[i]=calc(i/2)+calc(i/2+1); } return table[i]; } int max(int a,int b) { return a>b ? a : b; } int solve(int n) { int i,m=-1,v; for(i=0; i<=n; i++) { v=calc(i); if(v>m) m=v; } return m; } int main() { int i; for(i=2; i<100000; i++) table[i]=-1; table[0]=0; table[1]=1; while(1) { int n; scanf("%d",&n); if(n==0) break; printf("%d\n",solve(n)); } return 0; }