func_code_string: #include <bits/stdc++.h>   using namespace std;   template <class T>   inline T sqr(T x) {     return x * x;   }   template <class T>   inline T parse(const string &s) {     T x;     stringstream ss(s);     ss >> x;     return x;   }   const double EPS = 1e-12;   const int INF = 1000 * 1000 * 1000;   const long long LINF = INF * 1ll * INF;   const double DINF = 1e200;   const double PI = 3.1415926535897932384626433832795l;   int gcd(int a, int b) { return a ? gcd(b % a, a) : b; }   long long gcd(long long a, long long b) { return a ? gcd(b % a, a) : b; }   long long gcdex(long long a, long long b, long long &x, long long &y) {     if (!a) {       x = 0, y = 1;       return b;     }     long long k = b / a;     long long g = gcdex(b - k * a, a, y, x);     x -= k * y;     return g;   }   long long inv(long long a, long long m) {     assert(m > 1);     long long x, y, g;     g = gcdex(a, m, x, y);     return (x % (m / g) + m / g) % m / g;   }   long long crt(long long a1, long long m1, long long a2, long long m2) {     long long a = (a2 - a1 % m2 + m2) % m2;     long long x, y, g;     g = gcdex(m1, m2, x, y);     if (a % g) return -1;     long long m = m1 / g * m2;     assert(x + m2 >= 0);     x = a / g * (x + m2) % m2;     long long r = (a1 + x * m1) % m;     assert(r % m1 == a1 && r % m2 == a2);     return r;   }   long long powmod(long long a, long long p, long long m) {     assert(p >= 0);     long long r = 1;     while (p) {       if (p & 1) r = r * a % m;       p >>= 1;       a = a * a % m;     }     return r;   }   bool isprime(long long a) {     if (a <= 1) return false;     for (long long i = 2; i * i <= a; ++i) {       if (a % i == 0) return false;     }     return true;   }   long long sqrtup(long long a) {     if (!a) return 0;     long long x = max(0ll, (long long)sqrt((double)a));     while (x * x >= a) --x;     while ((x + 1) * (x + 1) < a) ++x;     return x + 1;   }   long long isqrt(long long a) {     if (a <= 0) {       assert(!a);       return 0;     }     long long x = (long long)sqrt((double)a);     while (sqr(x + 1) <= a) ++x;     while (x * x > a) --x;     return x;   }   long long sgn(long long x) { return x < 0 ? -1 : x > 0 ? 1 : 0; }   template <class T>   ostream &operator<<(ostream &s, const vector<T> &v);   template <class A, class B>   ostream &operator<<(ostream &s, const pair<A, B> &p);   template <class K, class V>   ostream &operator<<(ostream &s, const map<K, V> &m);   template <class T>   ostream &operator<<(ostream &s, const set<T> &m);   template <class T, size_t N>   ostream &operator<<(ostream &s, const array<T, N> &a);   template <class... T>   ostream &operator<<(ostream &s, const tuple<T...> &t);   template <class T>   ostream &operator<<(ostream &s, const vector<T> &v) {     s <<  [ ;     for (int i = 0; i < (((int)(v).size())); ++i) {       if (i) s <<  , ;       s << v[i];     }     s <<  ] ;     return s;   }   template <class A, class B>   ostream &operator<<(ostream &s, const pair<A, B> &p) {     s <<  (  << p.first <<  ,  << p.second <<  ) ;     return s;   }   template <class K, class V>   ostream &operator<<(ostream &s, const map<K, V> &m) {     s <<  { ;     bool f = false;     for (const auto &it : m) {       if (f) s <<  , ;       f = true;       s << it.first <<  :   << it.second;     }     s <<  } ;     return s;   }   template <class T>   ostream &operator<<(ostream &s, const set<T> &m) {     s <<  { ;     bool f = false;     for (const auto &it : m) {       if (f) s <<  , ;       f = true;       s << it;     }     s <<  } ;     return s;   }   template <class T>   ostream &operator<<(ostream &s, const multiset<T> &m) {     s <<  { ;     bool f = false;     for (const auto &it : m) {       if (f) s <<  , ;       f = true;       s << it;     }     s <<  } ;     return s;   }   template <class T, class V, class C>   ostream &operator<<(ostream &s, const priority_queue<T, V, C> &q) {     auto a = q;     s <<  { ;     bool f = false;     while (!a.empty()) {       if (f) s <<  , ;       f = true;       s << a.top();       a.pop();     }     return s <<  } ;   }   template <class T, size_t N>   ostream &operator<<(ostream &s, const array<T, N> &a) {     s <<  [ ;     for (int i = 0; i < (((int)(a).size())); ++i) {       if (i) s <<  , ;       s << a[i];     }     s <<  ] ;     return s;   }   template <class T>   ostream &operator<<(ostream &s, const deque<T> &a) {     s <<  [ ;     for (int i = 0; i < (((int)(a).size())); ++i) {       if (i) s <<  , ;       s << a[i];     }     s <<  ] ;     return s;   }   template <size_t n, class... T>   struct put1 {     static ostream &put(ostream &s, const tuple<T...> &t) {       s << get<sizeof...(T) - n>(t);       if (n > 1) s <<  , ;       return put1<n - 1, T...>::put(s, t);     }   };   template <class... T>   struct put1<0, T...> {     static ostream &put(ostream &s, const tuple<T...> &t) { return s; }   };   template <class... T>   ostream &operator<<(ostream &s, const tuple<T...> &t) {     s <<  ( ;     put1<sizeof...(T), T...>::put(s, t);     s <<  ) ;     return s;   }   ostream &put3(ostream &s, const char *, bool) { return s; }   template <class U, class... T>   ostream &put3(ostream &s, const char *f, bool fs, U &&u, T &&...t) {     while (*f ==    ) ++f;     if (!fs) s <<  ,  ;     auto nf = f;     int d = 0;     while (*nf && (*nf !=  ,  || d)) {       if (*nf ==  ( )         ++d;       else if (*nf ==  ) )         --d;       ++nf;     }     auto nf2 = nf;     while (nf2 > f && *(nf2 - 1) ==    ) --nf;     fs = *f ==    ;     if (!fs) {       s.write(f, nf2 - f);       s <<  = ;     };     s << u;     if (fs) s <<    ;     if (*nf) ++nf;     return put3(s, nf, fs, forward<T>(t)...);   }   vector<pair<string, string>> solve() {     vector<pair<string, string>> R;     R.push_back(make_pair( init carry ,  ddd0uuu ));     const int L = 40;     for (int i = 0; i < (L); ++i) {       string andup =  uu10dtr0uel10dddttrudtedddl ;       string xordown =  d10utled0r0uduuutt1ludtru ;       string stepdown =  d10ut ;       R.push_back(make_pair( pad up ,  uuued0sdt0uudtddd ));       R.push_back(make_pair( pad down ,  ddeu0sut0ddutuu ));       R.push_back(make_pair( x and y , andup));       R.push_back(make_pair( x xor y , xordown));       R.push_back(make_pair( xy xor c ,  ddd  + xordown));       R.push_back(make_pair( xy and c , andup));       R.push_back(make_pair( not1 ,  uuuu01dt ));       R.push_back(make_pair( not2 ,  u01ut ));       R.push_back(make_pair( carry and ,  d  + andup));       R.push_back(make_pair( carry not ,  uu01ut ));       R.push_back(make_pair( 6 steps down ,   ));       for (int j = 0; j < (6); ++j) R.back().second += stepdown;       R.push_back(make_pair( carry left ,  l10rtuuu ));     }     R.push_back(make_pair( go to ans ,  rddddd ));     R.push_back(make_pair( unpad ,   ));     for (int i = 0; i < (L); ++i) R.back().second +=  rlt ;     return R;   }   string concat(const vector<pair<string, string>> &S) {     string r;     for (auto &p : S) r += p.second;     return r;   }   map<pair<int, int>, char> A;   void putnum(int a, int x, int y) {     while (a) {       A[make_pair(x, y)] =  0  + a % 2;       a /= 2;       --x;     }   }   string bin(int a) {     string r;     while (a) {       r += (char)( 0  + a % 2);       a /= 2;     }     reverse((r).begin(), (r).end());     return r;   }   string readout(int x, int y) {     string r;     while (A.count(make_pair(x, y))) {       r += A.at(make_pair(x, y));       ++x;     }     return r;   }   string sim(const vector<pair<string, string>> &S) {     vector<pair<char, char>> st;     int x = 0, y = 0;     for (auto &sub : S) {       for (char c : sub.second) {         if (c ==  t ) {           if (A.count(make_pair(x, y))) {             int cnt = A.at(make_pair(x, y)) -  0  + 1;             for (int qq = 0; qq < (cnt); ++qq) {               if (st.empty()) break;               c = st.back().first;               char pr = st.back().second;               st.pop_back();               if (c ==  0  || c ==  1  || c ==  e ) {                 if (!pr)                   A.erase(make_pair(x, y));                 else                   A[make_pair(x, y)] = pr;                 continue;               }               if (c ==  l )                 ++x;               else if (c ==  r )                 --x;               else if (c ==  u )                 --y;               else if (c ==  d )                 ++y;               else                 assert(c ==  s );             }           }         } else {           st.push_back(make_pair(c,  - ));           if (c ==  0  || c ==  1  || c ==  e ) {             st.back().second = A[make_pair(x, y)];             if (c ==  e )               A.erase(make_pair(x, y));             else               A[make_pair(x, y)] = c;           } else if (c ==  l )             --x;           else if (c ==  r )             ++x;           else if (c ==  u )             ++y;           else if (c ==  d )             --y;           else             assert(c ==  s );         }       }     }     return readout(x, y);   }   void test() {     auto S = solve();     for (int s = 2; s <= 100; ++s) {       for (int a = 1; a < s; ++a) {         A.clear();         putnum(a, 0, 0);         putnum(s - a, 0, 1);         string r = sim(S);         string b = bin(s);         if (r != b) {           do {           } while (false);           return;         }       }     }     do {     } while (false);   }   int main(int argc, char **argv) {     ios_base::sync_with_stdio(false);     cin.tie(0);     cout.precision(20);     srand(time(0));     cout << concat(solve());     return 0;   }   