func_code_string: #include <bits/stdc++.h>   using namespace std;   #pragma GCC optimize( Ofast )   #pragma GCC optimize( unroll-loops )   #pragma GCC optimize( O0 )   #pragma GCC optimize( O1 )   template <typename T>   void vec_SUN(vector<T> &Vec) {     vector<T> X;     X = Vec;     sort(X.begin(), X.end());     X.resize(unique(X.begin(), X.end()) - X.begin());     for (auto &u : Vec) u = lower_bound(X.begin(), X.end(), u) - X.begin() + 1;   }   template <typename T>   void arr_SUN(T *A, int n) {     vector<T> B(n);     for (int i = 0; i < n; i++) B[i] = A[i];     sort(B.begin(), B.end());     B.resize(unique(B.begin(), B.end()) - B.begin());     for (int i = 0; i < n; i++)       A[i] = lower_bound(B.begin(), B.end(), A[i]) - B.begin() + 1;   }   template <typename T>   void vec_012(vector<T> &A, int n) {     A.resize(n);     for (int i = 0; i < n; i++) A[i] = (T)i;   }   template <typename T>   void arr_012(T *A, int n) {     for (int i = 0; i < n; i++) A[i] = (T)i;   }   template <typename T>   void vec_123(vector<T> &A, int n) {     A.resize(n);     for (int i = 0; i < n; i++) A[i] = (T)(i + 1);   }   template <typename T>   void arr_123(T *A, int n) {     for (int i = 0; i < n; i++) A[i] = (T)(i + 1);   }   template <typename T>   void arr_equal(T *A, T *P, int n) {     for (int i = 0; i < n; i++) P[i] = A[i];   }   template <typename T>   void setTOvec(set<T> &S, vector<T> &V) {     V.resize(S.size());     int i = 0;     for (auto it = S.begin(); it != S.end(); it++) V[i++] = *it;   }   const int N = 1e5 + 5;   struct X {     int A[N];     int s = 0;     void add(int x) { A[s++] = x; }     void del() { s--; }     void print() {       cout << 0 <<    ;       for (int i = s - 1; i >= 0; i--) cout << A[i] <<    ;     }   };   bitset<N> M;   int n;   bool f(X &ANS, int s) {     if (s == 0 && ANS.s == n) {       ANS.print();       return true;     }     if (M[s]) return false;     M[s] = true;     ANS.add(s);     if (f(ANS, s / 2)) return true;     if (f(ANS, (s + n) / 2)) return true;     ANS.del();     M[s] = false;     return false;   }   int main() {     ios_base ::sync_with_stdio(false);     cin.tie(0);     cout.tie(0);     cin >> n;     X ANS;     if (n % 2 == 1)       cout << -1;     else       f(ANS, 0);     return 0;   }   