func_code_string: #include <bits/stdc++.h>   using namespace std;   const int MOD = 1e9 + 7;   const int INF = 1e9 + 5;   const long long INF64 = 1e18;   template <typename T>   string to_string(const vector<T>& v) {     string ret =  < ;     for (auto it : v) {       ret += to_string(it) +  ,  ;     }     ret.pop_back();     ret.pop_back();     ret +=  > ;     return ret;   }   void debug_print() { cerr << endl; }   template <typename T, typename... U>   void debug_print(T t, U... u) {     cerr <<     << to_string(t);     debug_print(u...);   }   const int N = 1e5 + 5;   void normalize(string& s, int m) {     reverse(s.begin(), s.end());     while (s.size() < m) s.push_back( 0 );     reverse(s.begin(), s.end());   }   string a, b;   int solve() {     if (a.size() == 1) {       return a[0] == b[0] ? 0 : a[0] > b[0] ? 1 : -1;     }     for (int i = 0; i < a.size() - 2; i++) {       if (a[i] == b[i]) continue;       int mx = min(a[i], b[i]);       a[i] -= mx;       b[i] -= mx;       if (a[i] >= 2) return 1;       if (b[i] >= 2) return -1;       if (a[i] > 0) {         a[i + 1]++;         a[i + 2]++;       }       if (b[i] > 0) {         b[i + 1]++;         b[i + 2]++;       }     }     if (a[a.size() - 2] != b[a.size() - 2]) {       return a[a.size() - 2] == b[a.size() - 2]  ? 0              : a[a.size() - 2] > b[a.size() - 2] ? 1                                                  : -1;     }     if (a.back() != b.back()) {       return a.back() == b.back() ? 0 : a.back() > b.back() ? 1 : -1;     }     return 0;   }   int main() {     cin >> a >> b;     if (a.size() > b.size())       normalize(b, a.size());     else       normalize(a, b.size());     int ans = solve();     if (ans == 0)       cout <<  =  << endl;     else if (ans == 1)       cout <<  >  << endl;     else       cout <<  <  << endl;     return 0;   }   