#include <bits/stdc++.h>
using namespace std;
vector<long long> all[1000005];
vector<long long> Next[1000005];
long long use[1000005] = {0};
long long have[1000005] = {0};
long long con = 0;
void F(long long here, long long tt) {
  have[here] = 1;
  use[here] = tt;
  if (tt) con += here;
  for (auto i : Next[here]) {
    if (have[i]) continue;
    F(i, 1 - tt);
  }
}
int main() {
  long long N, i, t;
  scanf("%lld", &N);
  if (N % 2 == 0) {
    printf("First\n");
    fflush(stdout);
    for (i = 0; i < N; i++) printf("%lld ", i + 1);
    for (i = 0; i < N; i++) printf("%lld ", i + 1);
    fflush(stdout);
  } else {
    printf("Second\n");
    fflush(stdout);
    for (i = 1; i <= 2 * N; i++) {
      scanf("%lld", &t);
      all[t].push_back(i);
    }
    for (i = 1; i <= N; i++) {
      Next[i].push_back(i + N);
      Next[i + N].push_back(i);
      Next[all[i][0]].push_back(all[i][1]);
      Next[all[i][1]].push_back(all[i][0]);
    }
    for (i = 1; i <= 2 * N; i++)
      if (!have[i]) F(i, 0);
    if (con % (2 * N)) {
      for (i = 1; i <= 2 * N; i++)
        if (!use[i]) printf("%lld ", i);
    } else {
      for (i = 1; i <= 2 * N; i++)
        if (use[i]) printf("%lld ", i);
    }
    fflush(stdout);
  }
  return 0;
}
