// {{{ #include #include #include #include #include #include #include #include #include #include #define SIZE(x) ((int) (x).size()) #define REP(i, n) for (int i = 0; i < (int) (n); ++i) #define FOR(i, a, b) for (int i = (int) (a); i <= (int) (b); ++i) #define FORD(i, a, b) for (int i = (int) (a); i >= (int) (b); --i) #define FORE(i, c) for (__typeof((c).begin()) i = (c).begin(); i != (c).end(); ++i) #define DEBUG(x) { cerr << #x << ": " << (x) << endl; } using namespace std; typedef long long LL; // }}} #define MAXS 500 LL A[MAXS], B[MAXS]; int main() { int a, b; while (cin >> a >> b, a) { LL aa = a, bb = b; int ia = 0, ib = 0; while (aa > 1) { A[ia++] = aa; if (aa % 2) aa = aa * 3 + 1; else aa /= 2; } A[ia++] = aa; while (bb > 1) { B[ib++] = bb; if (bb % 2) bb = bb * 3 + 1; else bb /= 2; } B[ib++] = bb; int w = 0; while (w < ia && w < ib && A[ia - 1 - w] == B[ib - 1 - w]) ++w; printf("%d needs %d steps, %d needs %d steps, they meet at %lld\n", a, ia - w, b, ib - w, A[ia - w]); } }