#include <bits/stdc++.h>
using namespace std;
const int N = 500005;
struct edge {
  int to, nxt, num;
} g[N << 1];
int n, head[N], cnt = 0;
vector<int> match[N];
void addedge(int u, int v, int num) {
  edge e = {v, head[u], num};
  g[head[u] = cnt++] = e;
}
bool vis[N << 1], vis_[N], chose[N << 1];
void dfs(int u) {
  vis_[u] = true;
  for (int i = head[u]; ~i; i = g[i].nxt) {
    int v = g[i].to;
    if (!vis[i]) {
      chose[g[i].num] = true;
      vis[i] = vis[i ^ 1] = true;
      dfs(v);
    }
  }
}
int main() {
  scanf("%d", &n);
  if (n & 1) {
    printf("Second\n");
    fflush(stdout);
    for (int i = 1; i <= (n << 1); i++) {
      int x;
      scanf("%d", &x);
      match[x].push_back(i);
    }
    for (int i = 1; i <= (n << 1); i++) chose[i] = vis[i] = false;
    for (int i = 1; i <= n; i++) head[i] = -1, vis_[i] = false;
    for (int i = 1; i <= n; i++) {
      int u = match[i][0], v = match[i][1];
      int u_ = u <= n ? u : u - n, v_ = v <= n ? v : v - n;
      addedge(u_, v_, u);
      addedge(v_, u_, v);
    }
    for (int i = 1; i <= n; i++) {
      if (!vis_[i]) dfs(i);
    }
    cerr << "\"OK!\\n\""
         << " " << ("OK!\n") << endl;
    int sum = 0;
    for (int i = 1; i <= (n << 1); i++) {
      if (chose[i]) sum = (sum + i) % (n << 1);
    }
    if (sum) {
      for (int i = 1; i <= (n << 1); i++) chose[i] = !chose[i];
    }
    for (int i = 1; i <= (n << 1); i++) {
      if (chose[i]) printf("%d ", i);
    }
    printf("\n");
    fflush(stdout);
  } else {
    printf("First\n");
    fflush(stdout);
    for (int i = 1; i <= (n << 1); i++) {
      if (i <= n)
        printf("%d ", i);
      else
        printf("%d ", i - n);
    }
    printf("\n");
    fflush(stdout);
  }
  int res;
  scanf("%d", &res);
  fflush(stdout);
  return 0;
}
