#include <bits/stdc++.h>
using namespace std;
int n, bel[2000005], head[2000005], nxt[6000005], pnt[6000005], dfn[2000005], T,
    E;
int low[2000005], stck[2000005], top, vis[2000005], col[2000005];
vector<int> V[500005];
void add_edge(int u, int v) {
  pnt[E] = v;
  nxt[E] = head[u];
  head[u] = E++;
}
void tarjan(int u) {
  dfn[u] = low[u] = ++T;
  vis[u] = 1;
  for (int i = head[u]; i != -1; i = nxt[i]) {
    int v = pnt[i];
    if (!dfn[v]) {
      col[v] = col[u] ^ 1;
      tarjan(v);
    }
  }
}
int main() {
  cin >> n;
  if (n % 2 == 0) {
    cout << "First" << endl;
    for (int i = 1; i <= 2 * n; i++) cout << (i - 1) % n + 1 << ' ';
    return 0;
  } else {
    cout << "Second" << endl;
    for (int i = 1; i <= 2 * n; i++) scanf("%d", &bel[i]);
    for (int i = 1; i <= 2 * n; i++) V[bel[i]].push_back(i);
    memset(head, -1, sizeof(head));
    for (int i = 1; i <= n; i++)
      add_edge(V[i][0], V[i][1]), add_edge(V[i][1], V[i][0]);
    for (int i = 1; i <= n; i++) add_edge(i, i + n), add_edge(i + n, i);
    for (int i = 1; i <= 2 * n; i++)
      if (!dfn[i]) tarjan(i);
    int tot = 0;
    for (int i = 1; i <= 2 * n; i++)
      if (col[i]) tot = (tot + i) % (2 * n);
    if (!tot) {
      for (int i = 1; i <= 2 * n; i++)
        if (col[i]) cout << i << ' ';
    } else {
      for (int i = 1; i <= 2 * n; i++)
        if (!col[i]) cout << i << ' ';
    }
  }
}
