#include <bits/stdc++.h>
using namespace std;
const int N = 500010;
vector<pair<int, int>> a[N];
int pos[N][2], chos[N], ans[N], n;
bool vis[N];
int main() {
  scanf("%d", &n);
  if (n % 2 == 0) {
    puts("First");
    fflush(stdout);
    for (int i = 1; i <= 2 * n; i++)
      printf("%d%c", i <= n ? i : i - n, " \n"[i == 2 * n]);
    fflush(stdout);
    int x;
    scanf("%d", &x);
    return 0;
  }
  puts("Second");
  fflush(stdout);
  for (int i = 1; i <= 2 * n; i++)
    if (i <= n)
      scanf("%d", &pos[i][0]);
    else
      scanf("%d", &pos[i - n][1]);
  for (int i = 1; i <= n; i++)
    a[pos[i][0]].push_back(make_pair(i, 0)),
        a[pos[i][1]].push_back(make_pair(i, 1));
  int KEY;
  for (int i = 1; i <= n; i++)
    if (!vis[i]) {
      int cnt = 1;
      vis[i] = 1;
      chos[i] = 0;
      pair<int, int> x =
          a[pos[i][0]][0].first == i ? a[pos[i][0]][1] : a[pos[i][0]][0];
      for (; x.first != i;) {
        vis[x.first] = 1;
        x.second ^= 1;
        chos[x.first] = x.second;
        cnt++;
        x = a[pos[x.first][x.second]][0].first == x.first
                ? a[pos[x.first][x.second]][1]
                : a[pos[x.first][x.second]][0];
      }
      if (cnt & 1) KEY = i;
    }
  int k = 0;
  for (int i = 1; i <= n; i++)
    if (chos[i]) k++;
  if ((k & 1) != (((n + 1) / 2) & 1)) {
    chos[KEY] = 1;
    pair<int, int> x =
        a[pos[KEY][1]][0].first == KEY ? a[pos[KEY][1]][1] : a[pos[KEY][1]][0];
    for (; x.first != KEY;) {
      x.second ^= 1;
      chos[x.first] = x.second;
      x = a[pos[x.first][x.second]][0].first == x.first
              ? a[pos[x.first][x.second]][1]
              : a[pos[x.first][x.second]][0];
    }
  }
  for (int i = 1; i <= n; i++) ans[pos[i][chos[i]]] = i + chos[i] * n;
  for (int i = 1; i <= n; i++) printf("%d%c", ans[i], " \n"[i == n]);
  fflush(stdout);
  int x;
  scanf("%d", &x);
  return 0;
}
