#include #include #include #include #include using namespace std; map MA,MB; long long nex(long long v){ if (v == 1) return 1; if (v % 2 == 0){ return v/2; } return v*3+1; } long long meetpoint; int main() { int A,B; while(true){ cin >> A >> B; if (A==0) break; MA.clear(); MB.clear(); long long av = A; long long bv = B; int turns = 0; while(true){ // cout << turns << endl; // cout << turns << " " << av << " " << bv << endl; if (MA.find(av) == MA.end()) MA[av] = turns; if (MB.find(bv) == MB.end()) MB[bv] = turns; if (MA.find(bv) != MA.end()){ meetpoint = bv; break; } if (MB.find(av) != MB.end()){ meetpoint = av; break; } turns++; av = nex(av); bv = nex(bv); } printf("%d needs %d steps, %d needs %d steps, they meet at %lld\n",A,MA[meetpoint],B,MB[meetpoint],meetpoint); } return 0; }