#include #include using namespace std; map A; int main() { while(1) { A.clear(); long long puvA, puvB; long long step=0; long long cisloA, cisloB; scanf("%lld %lld", &cisloA, &cisloB); puvA=cisloA; puvB=cisloB; if(cisloA==0 && cisloB==0) break; if(cisloA==cisloB) { printf("%lld needs %lld steps, %lld needs %lld steps, they meet at %lld\n", puvA, 0LL, puvB, 0LL, puvA); goto dalsi; } A[cisloA]=0; A[cisloB]=0; while(cisloA>1 || cisloB>1) { step++; if(cisloA>1){ if(cisloA%2==0) cisloA=cisloA/2; else cisloA=3*cisloA+1; if(A.find(cisloA)!=A.end()) {printf("%lld needs %lld steps, %lld needs %lld steps, they meet at %lld\n", puvA, step, puvB, A[cisloA], cisloA); goto dalsi;} else A[cisloA]=step; } if(cisloB>1){ if(cisloB%2==0) cisloB=cisloB/2; else cisloB=3*cisloB+1; if(A.find(cisloB)!=A.end()) {printf("%lld needs %lld steps, %lld needs %lld steps, they meet at %lld\n", puvA, A[cisloB], puvB, step, cisloB); goto dalsi;} else A[cisloB]=step; } } dalsi: ; } return 0; }