#include #include #include int aP[100000001]; int bP[100000001]; int a,aZ,a_step; int b,bZ,b_step; int final; void magic() { aZ=a; bZ=b; if(a!=b) while(true) { if(a%2==0) { a=a/2; } else { a=3*a+1; } if(b%2==0) { b=b/2; } else { b=3*b+1; } a_step++; b_step++; if(aP[a]==0) aP[a]=a_step; if(bP[b]==0) bP[b]=b_step; if(a==bZ) {b_step=0; final=a; break;} if(b==aZ) {a_step=0; final=b; break;} if(bP[a]!=0) {final=a; b_step=bP[a]; break;} if(aP[b]!=0) {final=b; a_step=aP[b]; break;} } printf("%d needs %d steps, %d needs %d steps, they meet at %d\n",aZ,a_step,bZ,b_step,final); } int main() { while(true) { memset(&aP[0],0,sizeof(int)*100000001); memset(&bP[0],0,sizeof(int)*100000001); b=bZ=b_step=a=aZ=a_step=final=0; scanf("%d%d",&a,&b); if(a==0 && b==0) break; else magic(); } return 0; }