#include <string>
#include <algorithm>
#include <iostream>
using int128 = signed __int128;
using uint128 = unsigned __int128;
namespace int128_io {
inline auto char_to_digit(int chr) {
return static_cast<int>(isalpha(chr) ? 10+tolower(chr)-'a': chr-'0'); }
inline auto digit_to_char(int digit) {
return static_cast<char>(digit > 9 ? 'a'+digit-10: '0'+digit); }
template<class integer>
inline auto to_int(const std::string &str, size_t *idx = nullptr, int base = 10) {
size_t i = idx != nullptr ? *idx : 0;
const auto n = str.size();
const auto neg = str[i] == '-';
integer num = 0;
if (neg)
++i;
while (i < n)
num *= base, num += char_to_digit(str[i++]);
if (idx != nullptr)
*idx = i;
return neg ? -num : num; }
template<class integer>
inline auto to_string(integer num, int base = 10) {
const auto neg = num < 0;
std::string str;
if (neg)
num = -num;
do
str += digit_to_char(num%base), num /= base;
while (num > 0);
if (neg)
str += '-';
std::reverse(str.begin(),str.end());
return str; }
inline auto next_str(std::istream &stream) { std::string str; stream >> str; return str; }
template<class integer>
inline auto& read(std::istream &stream, integer &num) {
num = to_int<integer>(next_str(stream));
return stream; }
template<class integer>
inline auto& write(std::ostream &stream, integer num) { return stream << to_string(num); } }
using namespace std;
inline auto& operator>>(istream &stream, int128 &num) { return int128_io::read(stream,num); }
inline auto& operator>>(istream &stream, uint128 &num) { return int128_io::read(stream,num); }
inline auto& operator<<(ostream &stream, int128 num) { return int128_io::write(stream,num); }
inline auto& operator<<(ostream &stream, uint128 num) { return int128_io::write(stream,num); }
inline auto uint128_max() {
uint128 ans = 0;
for (uint128 pow = 1; pow > 0; pow <<= 1)
ans |= pow;
return ans; }
int main() {
int128 x, y;
if (cin >> x >> y, cout << x << " + " << y << " = " << x+y << endl, x > y)
cout << x << " > " << y << endl;
else
cout << x << " <= " << y << endl;
cout << "maximum unsigned 128-bit integer 2**128 - 1 = " << uint128_max(); }
I2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPGlvc3RyZWFtPgoKdXNpbmcgIGludDEyOCA9ICAgc2lnbmVkIF9faW50MTI4Owp1c2luZyB1aW50MTI4ID0gdW5zaWduZWQgX19pbnQxMjg7CgpuYW1lc3BhY2UgaW50MTI4X2lvIHsKCglpbmxpbmUgYXV0byBjaGFyX3RvX2RpZ2l0KGludCBjaHIpIHsKCSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50Pihpc2FscGhhKGNocikgPyAxMCt0b2xvd2VyKGNociktJ2EnOiBjaHItJzAnKTsgfQoKCWlubGluZSBhdXRvIGRpZ2l0X3RvX2NoYXIoaW50IGRpZ2l0KSB7CiAgICAJcmV0dXJuIHN0YXRpY19jYXN0PGNoYXI+KGRpZ2l0ID4gOSA/ICdhJytkaWdpdC0xMDogJzAnK2RpZ2l0KTsgfQoKCXRlbXBsYXRlPGNsYXNzIGludGVnZXI+CglpbmxpbmUgYXV0byB0b19pbnQoY29uc3Qgc3RkOjpzdHJpbmcgJnN0ciwgc2l6ZV90ICppZHggPSBudWxscHRyLCBpbnQgYmFzZSA9IDEwKSB7CgkJc2l6ZV90IGkgPSBpZHggIT0gbnVsbHB0ciA/ICppZHggOiAwOwoJCWNvbnN0IGF1dG8gbiA9IHN0ci5zaXplKCk7CgkJY29uc3QgYXV0byBuZWcgPSBzdHJbaV0gPT0gJy0nOwoJCWludGVnZXIgbnVtID0gMDsKCQlpZiAobmVnKQoJCQkrK2k7CgkJd2hpbGUgKGkgPCBuKQoJCQludW0gKj0gYmFzZSwgbnVtICs9IGNoYXJfdG9fZGlnaXQoc3RyW2krK10pOwoJCWlmIChpZHggIT0gbnVsbHB0cikKCQkJKmlkeCA9IGk7CgkJcmV0dXJuIG5lZyA/IC1udW0gOiBudW07IH0KCgl0ZW1wbGF0ZTxjbGFzcyBpbnRlZ2VyPgoJaW5saW5lIGF1dG8gdG9fc3RyaW5nKGludGVnZXIgbnVtLCBpbnQgYmFzZSA9IDEwKSB7CgkJY29uc3QgYXV0byBuZWcgPSBudW0gPCAwOwoJCXN0ZDo6c3RyaW5nIHN0cjsKCQlpZiAobmVnKQoJCQludW0gPSAtbnVtOwoJCWRvCgkJCXN0ciArPSBkaWdpdF90b19jaGFyKG51bSViYXNlKSwgbnVtIC89IGJhc2U7CgkJd2hpbGUgKG51bSA+IDApOwoJCWlmIChuZWcpCgkJCXN0ciArPSAnLSc7CgkJc3RkOjpyZXZlcnNlKHN0ci5iZWdpbigpLHN0ci5lbmQoKSk7CgkJcmV0dXJuIHN0cjsgfQoKCWlubGluZSBhdXRvIG5leHRfc3RyKHN0ZDo6aXN0cmVhbSAmc3RyZWFtKSB7IHN0ZDo6c3RyaW5nIHN0cjsgc3RyZWFtID4+IHN0cjsgcmV0dXJuIHN0cjsgfQoKCXRlbXBsYXRlPGNsYXNzIGludGVnZXI+CglpbmxpbmUgYXV0byYgcmVhZChzdGQ6OmlzdHJlYW0gJnN0cmVhbSwgaW50ZWdlciAmbnVtKSB7CgkJbnVtID0gdG9faW50PGludGVnZXI+KG5leHRfc3RyKHN0cmVhbSkpOwoJCXJldHVybiBzdHJlYW07IH0KCgl0ZW1wbGF0ZTxjbGFzcyBpbnRlZ2VyPgoJaW5saW5lIGF1dG8mIHdyaXRlKHN0ZDo6b3N0cmVhbSAmc3RyZWFtLCBpbnRlZ2VyIG51bSkgeyByZXR1cm4gc3RyZWFtIDw8IHRvX3N0cmluZyhudW0pOyB9IH0KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbmxpbmUgYXV0byYgb3BlcmF0b3I+Pihpc3RyZWFtICZzdHJlYW0sICBpbnQxMjggJm51bSkgeyByZXR1cm4gaW50MTI4X2lvOjpyZWFkKHN0cmVhbSxudW0pOyB9CmlubGluZSBhdXRvJiBvcGVyYXRvcj4+KGlzdHJlYW0gJnN0cmVhbSwgdWludDEyOCAmbnVtKSB7IHJldHVybiBpbnQxMjhfaW86OnJlYWQoc3RyZWFtLG51bSk7IH0KaW5saW5lIGF1dG8mIG9wZXJhdG9yPDwob3N0cmVhbSAmc3RyZWFtLCAgaW50MTI4ICBudW0pIHsgcmV0dXJuIGludDEyOF9pbzo6d3JpdGUoc3RyZWFtLG51bSk7IH0KaW5saW5lIGF1dG8mIG9wZXJhdG9yPDwob3N0cmVhbSAmc3RyZWFtLCB1aW50MTI4ICBudW0pIHsgcmV0dXJuIGludDEyOF9pbzo6d3JpdGUoc3RyZWFtLG51bSk7IH0KCmlubGluZSBhdXRvIHVpbnQxMjhfbWF4KCkgewoJdWludDEyOCBhbnMgPSAwOwogICAgZm9yICh1aW50MTI4IHBvdyA9IDE7IHBvdyA+IDA7IHBvdyA8PD0gMSkKCQlhbnMgfD0gcG93OwogICAgcmV0dXJuIGFuczsgfQoKaW50IG1haW4oKSB7CglpbnQxMjggeCwgeTsKCWlmIChjaW4gPj4geCA+PiB5LCBjb3V0IDw8IHggPDwgIiArICIgPDwgeSA8PCAiID0gIiA8PCB4K3kgPDwgZW5kbCwgeCA+IHkpCgkJY291dCA8PCB4IDw8ICIgPiAiIDw8IHkgPDwgZW5kbDsKCWVsc2UKCQljb3V0IDw8IHggPDwgIiA8PSAiIDw8IHkgPDwgZW5kbDsKCWNvdXQgPDwgIm1heGltdW0gdW5zaWduZWQgMTI4LWJpdCBpbnRlZ2VyIDIqKjEyOCAtIDEgPSAiIDw8IHVpbnQxMjhfbWF4KCk7IH0K