#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;
}
