func_code_string: #include <bits/stdc++.h>   using namespace std;   const long long maxn = 2e6 + 10;   long long n, a[maxn], Begin[maxn], Next[maxn], To[maxn], e, sum;   bool vis[maxn], use[maxn];   inline void add(long long u, long long v) {     To[++e] = v;     Next[e] = Begin[u];     Begin[u] = e;   }   inline void DFS(long long u, long long op) {     if (vis[u]) return;     vis[u] = true;     if (op == 0) {       use[u] = true;       sum += u;     }     for (long long i = Begin[u]; i; i = Next[i]) DFS(To[i], op ^ 1);   }   signed main() {     scanf( %lld , &n);     if (n % 2 == 0) {       puts( First );       for (long long i = (1), _end_ = (n); i <= _end_; ++i) printf( %lld  , i);       for (long long i = (1), _end_ = (n); i <= _end_; ++i) printf( %lld  , i);       fflush(stdout);       return 0;     }     puts( Second );     fflush(stdout);     for (long long i = (1), _end_ = (n + n); i <= _end_; ++i) {       long long x;       scanf( %lld , &x);       if (a[x]) {         add(a[x], i);         add(i, a[x]);       } else         a[x] = i;     }     for (long long i = (1), _end_ = (n); i <= _end_; ++i) {       add(i, i + n);       add(i + n, i);     }     for (long long i = (1), _end_ = (n + n); i <= _end_; ++i)       if (!vis[i]) DFS(i, 0);     if (sum % (n + n) == 0) {       for (long long i = (1), _end_ = (n + n); i <= _end_; ++i)         if (use[i]) printf( %lld  , i);     } else {       for (long long i = (1), _end_ = (n + n); i <= _end_; ++i)         if (!use[i]) printf( %lld  , i);     }     puts(  );     return 0;   }   