func_code_string: #include <bits/stdc++.h>   using namespace std;   const int inf = (1 << 30) - 1;   const long long linf = (1ll << 62) - 1;   int GLL(long long& x) { return scanf( %lld , &x); }   int GI(int& x) { return scanf( %d , &x); }   void IO() {     ios::sync_with_stdio(0);     cin.tie(0);     cout.tie(0);     cin.exceptions(ios::badbit | ios::failbit);   }   void file() {     freopen( mountains.in ,  r , stdin);     freopen( mountains.out ,  w , stdout);   }   const int N = 1e5 + 7, M = 2 * N;   int to[M], nxt[M], head[N], ne, visited[N], vid;   int n, m;   void init() {     memset(head, -1, n * sizeof(head[0]));     ne = 0;   }   void addEdge(int u, int v) {     to[ne] = v;     nxt[ne] = head[u];     head[u] = ne++;   }   void BiEdge(int u, int v) {     addEdge(u, v);     addEdge(v, u);   }   long long A[100001], B[100001], C[100001];   void solve() {     int n;     cin >> n;     if (n % 2 == 0)       puts( -1 );     else {       for (int i = 0; i < n; i++) {         A[i] = B[i] = i;         C[i] = (A[i] + B[i]) % n;       }       for (int i = 0; i < n; i++) cout << A[i] <<    ;       cout << endl;       for (int j = 0; j < n; j++) cout << B[j] <<    ;       cout << endl;       for (int j = 0; j < n; j++) cout << C[j] <<    ;       cout << endl;     }   }   int main() {     IO();     long long t = 1;     solve();   }   