#include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define FOR(i,a,b) for (int i = (a); i < (b); ++i) #define FOR2(i,a,b) for (int i = (a); i > (b); ++i) #define DEBUG(x) cout << '>' << #x << ':' << x << endl; inline bool EQ(double a, double b) { return fabs(a-b) < 1e-9; } const int INF = 1<<29; typedef long long ll; ////////////////////////////////////////////////////////////////////////////// inline ll col(ll x) { if (x == 1) return x; if (x&1) return 3*x+1; else return x/2; } int main() { while (1) { ll a, b, A, B; scanf("%lld%lld", &a, &b); if (!a && !b) break; A = a; B = b; int steps1, steps2, steps = 0; map m; m[a] = steps++; while (a > 1) { a = col(a); m[a] = steps++; } steps = 0; while (m.find(b) == m.end()) { ++steps; b = col(b); } steps1 = m[b]; steps2 = steps; ll res = b; printf("%lld needs %d steps, %lld needs %d steps, they meet at %lld\n", A, steps1, B, steps2, res); } return 0; }