// Time limit exceeded. The limit is 3 sec.
#include <cstdint>
#include <iostream>
#include <unordered_map>
#include <algorithm>
#include <iterator>
using namespace std;
int main();
typedef uint_fast32_t number;
typedef uint_fast32_t sequencelength;
class lengthsbase
{
unordered_map<number,sequencelength> t;
public:
const sequencelength &operator[] (number);
class iterator;
iterator find(number);
} b;
class lengthsbase::iterator:
public ::iterator<forward_iterator_tag, sequencelength const, void>
{
friend class lengthsbase;
lengthsbase &b;
number i;
iterator(lengthsbase&, number);
public:
iterator &operator=(const iterator&);
iterator &operator++();
friend bool operator==(const iterator&, const iterator&);
const sequencelength &operator*() const;
};
int main()
{
ios_base::sync_with_stdio(false);
number i, j;
while(cin >> i >> j)
cout << i << ' ' << j << ' '
<< *max_element(b.find(min(i,j)), ++b.find(max(i,j)))
<< '\n';
return 0;
}
const sequencelength &lengthsbase::operator[] (number i)
{
if(!t.count(i))
t.insert
(make_pair(i, (i == 1 ? 1 : operator[](i%2 == 0 ? i/2 : 3*i+1) + 1)));
return t[i];
}
lengthsbase::iterator lengthsbase::find(number i)
{
return iterator(*this, i);
}
const sequencelength &lengthsbase::iterator::operator *() const
{
return b[i];
}
lengthsbase::iterator::iterator(lengthsbase &b, const number i): b(b), i(i) {}
lengthsbase::iterator &lengthsbase::iterator::operator=
(const lengthsbase::iterator &it)
{
b=it.b;
i=it.i;
return *this;
}
lengthsbase::iterator &lengthsbase::iterator::operator ++()
{
++i;
return *this;
}
bool operator ==
(const lengthsbase::iterator &it, const lengthsbase::iterator &jt)
{
return &(it.b) == &(jt.b) && it.i == jt.i;
}
bool operator !=
(const lengthsbase::iterator &it, const lengthsbase::iterator &jt)
{
return !(it == jt);
}
Ly8gVGltZSBsaW1pdCBleGNlZWRlZC4gVGhlIGxpbWl0IGlzIDMgc2VjLgoKI2luY2x1ZGUgPGNzdGRpbnQ+CiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPHVub3JkZXJlZF9tYXA+CiNpbmNsdWRlIDxhbGdvcml0aG0+CiNpbmNsdWRlIDxpdGVyYXRvcj4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBtYWluKCk7Cgp0eXBlZGVmIHVpbnRfZmFzdDMyX3QgbnVtYmVyOwp0eXBlZGVmIHVpbnRfZmFzdDMyX3Qgc2VxdWVuY2VsZW5ndGg7CgpjbGFzcyBsZW5ndGhzYmFzZQp7IAogIHVub3JkZXJlZF9tYXA8bnVtYmVyLHNlcXVlbmNlbGVuZ3RoPiB0OwpwdWJsaWM6CiAgY29uc3Qgc2VxdWVuY2VsZW5ndGggJm9wZXJhdG9yW10gKG51bWJlcik7CiAgCiAgY2xhc3MgaXRlcmF0b3I7CiAgaXRlcmF0b3IgZmluZChudW1iZXIpOwp9IGI7CgpjbGFzcyBsZW5ndGhzYmFzZTo6aXRlcmF0b3I6CiAgcHVibGljIDo6aXRlcmF0b3I8Zm9yd2FyZF9pdGVyYXRvcl90YWcsIHNlcXVlbmNlbGVuZ3RoIGNvbnN0LCB2b2lkPgp7CiAgZnJpZW5kIGNsYXNzIGxlbmd0aHNiYXNlOwogIAogIGxlbmd0aHNiYXNlICZiOwogIG51bWJlciBpOwogIGl0ZXJhdG9yKGxlbmd0aHNiYXNlJiwgbnVtYmVyKTsKICAKcHVibGljOgogIGl0ZXJhdG9yICZvcGVyYXRvcj0oY29uc3QgaXRlcmF0b3ImKTsKICBpdGVyYXRvciAmb3BlcmF0b3IrKygpOwogIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29uc3QgaXRlcmF0b3ImLCBjb25zdCBpdGVyYXRvciYpOwogIAogIGNvbnN0IHNlcXVlbmNlbGVuZ3RoICZvcGVyYXRvciooKSBjb25zdDsKfTsKCmludCBtYWluKCkKewogIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogIAogIG51bWJlciBpLCBqOwogIHdoaWxlKGNpbiA+PiBpID4+IGopCiAgICBjb3V0IDw8IGkgPDwgJyAnIDw8IGogPDwgJyAnCiAgICAgIDw8ICptYXhfZWxlbWVudChiLmZpbmQobWluKGksaikpLCArK2IuZmluZChtYXgoaSxqKSkpCiAgICAgIDw8ICdcbic7CiAgCiAgcmV0dXJuIDA7Cn0KCmNvbnN0IHNlcXVlbmNlbGVuZ3RoICZsZW5ndGhzYmFzZTo6b3BlcmF0b3JbXSAobnVtYmVyIGkpCnsKICBpZighdC5jb3VudChpKSkKICAgIHQuaW5zZXJ0CiAgICAgIChtYWtlX3BhaXIoaSwgKGkgPT0gMSA/IDEgOiBvcGVyYXRvcltdKGklMiA9PSAwID8gaS8yIDogMyppKzEpICsgMSkpKTsKICAKICByZXR1cm4gdFtpXTsKfQoKbGVuZ3Roc2Jhc2U6Oml0ZXJhdG9yIGxlbmd0aHNiYXNlOjpmaW5kKG51bWJlciBpKQp7CiAgcmV0dXJuIGl0ZXJhdG9yKCp0aGlzLCBpKTsKfQoKY29uc3Qgc2VxdWVuY2VsZW5ndGggJmxlbmd0aHNiYXNlOjppdGVyYXRvcjo6b3BlcmF0b3IgKigpIGNvbnN0CnsKICByZXR1cm4gYltpXTsKfQoKbGVuZ3Roc2Jhc2U6Oml0ZXJhdG9yOjppdGVyYXRvcihsZW5ndGhzYmFzZSAmYiwgY29uc3QgbnVtYmVyIGkpOiBiKGIpLCBpKGkpIHt9CgpsZW5ndGhzYmFzZTo6aXRlcmF0b3IgJmxlbmd0aHNiYXNlOjppdGVyYXRvcjo6b3BlcmF0b3I9CiAgKGNvbnN0IGxlbmd0aHNiYXNlOjppdGVyYXRvciAmaXQpCnsKICBiPWl0LmI7CiAgaT1pdC5pOwogIHJldHVybiAqdGhpczsKfQoKbGVuZ3Roc2Jhc2U6Oml0ZXJhdG9yICZsZW5ndGhzYmFzZTo6aXRlcmF0b3I6Om9wZXJhdG9yICsrKCkKewogICsraTsKICByZXR1cm4gKnRoaXM7Cn0KCmJvb2wgb3BlcmF0b3IgPT0KICAoY29uc3QgbGVuZ3Roc2Jhc2U6Oml0ZXJhdG9yICZpdCwgY29uc3QgbGVuZ3Roc2Jhc2U6Oml0ZXJhdG9yICZqdCkKewogIHJldHVybiAmKGl0LmIpID09ICYoanQuYikgJiYgaXQuaSA9PSBqdC5pOwp9Cgpib29sIG9wZXJhdG9yICE9CiAgKGNvbnN0IGxlbmd0aHNiYXNlOjppdGVyYXRvciAmaXQsIGNvbnN0IGxlbmd0aHNiYXNlOjppdGVyYXRvciAmanQpCnsKICByZXR1cm4gIShpdCA9PSBqdCk7Cn0=