#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1000100;
int N;
int vis[MAXN];
vector<int> V[MAXN];
vector<int> answer;
int iX[MAXN];
void dfs(int x, int v) {
  if (v == 1) answer.emplace_back(x);
  for (auto t : V[x]) {
    if (vis[t] != -1) continue;
    vis[t] = v ^ 1;
    dfs(t, vis[t]);
  }
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cin >> N;
  if (N % 2 == 0) {
    cout << "First\n" << flush;
    vector<int> A;
    N *= 2;
    A.resize(N + 1, 0);
    int cur = 1;
    int h = N / 2;
    int inx = 1;
    while (cur < N) {
      if (A[cur] != 0) break;
      if (cur == h - 1) {
        A[cur] = inx;
        ++cur;
        A[N - 1] = inx;
        ++inx;
      } else if (cur == h) {
        A[cur] = inx;
        ++cur;
        A[N] = inx;
        ++inx;
      } else {
        A[cur] = A[cur + 1] = inx;
        inx++;
        cur += 2;
      }
    }
    for (int i = 1; i <= N; ++i) {
      cout << A[i] << ' ';
    }
    cout << '\n' << flush;
    int a;
    cin >> a;
    assert(a == 0);
  } else {
    cout << "Second\n" << flush;
    for (int i = 1; i <= N; ++i) {
      V[i].emplace_back(i + N);
      V[i + N].emplace_back(i);
    }
    memset(vis, -1, sizeof(vis));
    vector<int> A;
    A.resize(N * 2, -1);
    for (int i = 1; i <= 2 * N; ++i) {
      int a;
      cin >> a;
      if (A[a] == -1) {
        A[a] = i;
        continue;
      } else {
        V[i].emplace_back(A[a]);
        V[A[a]].emplace_back(i);
      }
    }
    for (int i = 1; i <= 2 * N; ++i) {
      if (vis[i] != -1) continue;
      vis[i] = 1;
      dfs(i, 1);
    }
    long long S = 0;
    for (auto i : answer) S += i;
    if (S % (2 * N) != 0) {
      for (auto &i : answer) {
        if (i > N)
          i -= N;
        else
          i += N;
      }
    }
    sort(answer.begin(), answer.end());
    for (auto i : answer) cout << i << ' ';
    cout << '\n';
    cout << flush;
  }
}
