#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 1;
int n, sum, vis[N];
vector<int> g[N];
int col[N];
void dfs(int u, int c) {
  col[u] = c;
  if (col[u]) sum = (sum + u) % (2 * n);
  for (int& v : g[u])
    if (col[v] == -1) dfs(v, c ^ 1);
}
int main(void) {
  scanf("%d", &n);
  if (n % 2 == 0) {
    puts("First");
    for (int i = 1; i <= n; i++) printf("%d%c", i, ' ');
    for (int i = 1; i <= n; i++) printf("%d%c", i, "\n "[i != n]);
    fflush(stdout);
    int res;
    scanf("%d", &res);
    assert(res == 0);
    return 0;
  }
  puts("Second");
  fflush(stdout);
  for (int i = 1, x; i <= 2 * n; i++) {
    scanf("%d", &x);
    if (!vis[x]) {
      vis[x] = i;
    } else {
      g[vis[x]].push_back(i);
      g[i].push_back(vis[x]);
    }
  }
  for (int i = 1; i <= n; i++) {
    g[i].push_back(i + n);
    g[i + n].push_back(i);
  }
  fill_n(col + 1, 2 * n, -1);
  for (int i = 1; i <= 2 * n; i++)
    if (col[i] == -1) dfs(i, 0);
  vector<int> ans;
  if (sum == 0) {
    for (int i = 1; i <= 2 * n; i++)
      if (col[i]) ans.push_back(i);
  } else {
    for (int i = 1; i <= 2 * n; i++)
      if (!col[i]) ans.push_back(i);
  }
  for (int i = 0; i < n; i++) printf("%d%c", ans[i], "\n "[i != n - 1]);
  fflush(stdout);
  int res;
  scanf("%d", &res);
  assert(res == 0);
}
