#include <bits/stdc++.h>
using namespace std;
struct hehe {
  int num, id;
} a[1000001];
int head[1000001], nxt[2000001], to[2000001], tot;
bool fl[1000001], used[1000001];
bool cmp(hehe x, hehe y) { return x.id < y.id; }
void add(int x, int y) {
  nxt[++tot] = head[x];
  head[x] = tot;
  to[tot] = y;
}
void dfs(int x, int from) {
  if (used[x]) return;
  if (!fl[from])
    fl[x] = 1;
  else
    fl[x] = 0;
  used[x] = 1;
  for (int i = head[x]; i; i = nxt[i]) {
    int y = to[i];
    if (y == from) continue;
    dfs(y, x);
  }
}
int main() {
  int n;
  cin >> n;
  if (n & 1) {
    cout << "Second" << endl;
    for (int i = 1; i <= 2 * n; i++) {
      cin >> a[i].id;
      a[i].num = i;
    }
    for (int i = 1; i <= n; i++) {
      if (a[i].id != a[i + n].id) add(i, i + n), add(i + n, i);
    }
    sort(a + 1, a + 2 * n + 1, cmp);
    for (int i = 1; i <= 2 * n; i += 2) {
      add(a[i].num, a[i + 1].num);
      add(a[i + 1].num, a[i].num);
    }
    for (int i = 1; i <= n * 2; i++) {
      if (!used[i]) {
        dfs(i, 0);
      }
    }
    int sum = 0;
    for (int i = 1; i <= 2 * n; i++)
      if (fl[i]) sum = (sum + i) % (2 * n);
    bool fin;
    if (!sum)
      fin = 1;
    else
      fin = 0;
    for (int i = 1; i <= 2 * n; i++)
      if (fl[i] == fin) cout << i << ' ';
    cout << endl;
  } else {
    cout << "First" << endl;
    for (int i = 1; i <= n; i++) cout << i << ' ';
    for (int i = 1; i <= n; i++) cout << i << ' ';
    cout << endl;
  }
  return 0;
}
