#include <bits/stdc++.h>
using namespace std;
const long long maxn = 2e6 + 100;
const long long inf = 0x3f3f3f3f;
const long long iinf = 1 << 30;
const long long linf = 2e18;
const long long mod = 998244353;
const double eps = 1e-7;
template <class T = long long>
T chmin(T &a, T b) {
  return a = min(a, b);
}
template <class T = long long>
T chmax(T &a, T b) {
  return a = max(a, b);
}
template <class T = long long>
T read() {
  T f = 1, a = 0;
  char ch = getchar();
  while (!isdigit(ch)) {
    if (ch == '-') f = -1;
    ch = getchar();
  }
  while (isdigit(ch)) {
    a = (a << 3) + (a << 1) + ch - '0';
    ch = getchar();
  }
  return a * f;
}
long long n;
long long vis[maxn], ans[maxn], tot, pos[maxn], sum, cnt[maxn];
pair<long long, long long> a[maxn];
signed main() {
  n = read();
  if (n % 2 == 0) {
    puts("First");
    fflush(stdout);
    for (long long i = (1); i <= (2 * n); ++i)
      printf("%lld%c", i % n + 1, " \n"[i == 2 * n]);
    fflush(stdout);
  } else {
    puts("Second");
    fflush(stdout);
    for (long long i = (1); i <= (2 * n); ++i) {
      pos[i] = read();
      if (!a[pos[i]].first)
        a[pos[i]].first = i;
      else
        a[pos[i]].second = i;
    }
    for (long long i = (1); i <= (n); ++i) {
      if (vis[i]) continue;
      long long now = i;
      while (!vis[now]) {
        vis[now] = 1;
        ans[++tot] = a[now].first;
        sum += a[now].first;
        long long tmp = a[now].second % n + 1;
        now = pos[(a[now].second + n - 1) % (2 * n) + 1];
        if (a[now].second % n + 1 == tmp) swap(a[now].first, a[now].second);
      }
    }
    sum %= 2 * n;
    if (sum == 0)
      for (long long i = (1); i <= (n); ++i)
        printf("%lld%c", ans[i], " \n"[i == n]);
    else {
      for (long long i = (1); i <= (n); ++i) cnt[ans[i]] = 1;
      for (long long i = (1); i <= (2 * n); ++i)
        if (!cnt[i]) printf("%lld ", i);
      putchar('\n');
    }
    fflush(stdout);
  }
  return 0;
}
