#include <bits/stdc++.h>
using namespace std;
void fill(std::vector<int> &v, std::vector<int> &fill1, vector<int> &fill2,
          int p, int k) {
  int x = v.size();
  if (p == 1) {
    int pb = 0;
    for (int i = 0; i < x; i++) {
      if (v[i] <= k) {
        if (fill2[k - v[i]] == 0) fill(v, fill1, fill2, 2, k - v[i]);
        if (fill2[k - v[i]] == 1) {
          fill1[k] = 1;
          pb = 1;
          break;
        } else if (fill2[k - v[i]] == 2)
          continue;
      }
    }
    if (!pb) {
      fill1[k] = 2;
    }
    return;
  } else {
    int pb = 0;
    for (int i = 0; i < x; i++) {
      if (v[i] <= k) {
        if (fill1[k - v[i]] == 0) fill(v, fill1, fill2, 1, k - v[i]);
        if (fill1[k - v[i]] == 2) {
          fill2[k] = 2;
          pb = 1;
          break;
        } else if (fill1[k - v[i]] == 1)
          continue;
      }
    }
    if (!pb) {
      fill2[k] = 1;
    }
    return;
  }
}
int main(int argc, char const *argv[]) {
  int n, k;
  cin >> n >> k;
  std::vector<int> v(n);
  for (int i = 0; i < n; i++) cin >> v[i];
  std::vector<int> v1(k + 1, 0), v2(k + 1, 0);
  v1[0] = 2;
  v2[0] = 1;
  fill(v, v1, v2, 1, k);
  for (int i = 0; i <= k; i++) cout << v1[i] << " ";
  cout << "\n";
  for (int i = 0; i <= k; i++) cout << v2[i] << " ";
  cout << "\n";
  if (v1[k] == 1) {
    cout << "First\n";
  } else if (v1[k] == 2)
    cout << "Second\n";
  return 0;
}
