#include <bits/stdc++.h>
using namespace std;
int dfs(int mask, int n, int *arr, int k, int **dp) {
  if (k <= 0) return true;
  if (mask == ((1 << n) - 1)) return false;
  if (dp[mask][k] != -1) return dp[mask][k];
  cout << mask << endl;
  bool myjj = false;
  for (int j = 0; j < n; j++) {
    if ((mask & (1 << j)) == 0) {
      int temp_stones = k - arr[j];
      int temp_mask = (mask | (1 << j));
      myjj = (myjj | dfs(temp_mask, n, arr, temp_stones, dp));
    }
  }
  dp[mask][k] = myjj;
  return myjj;
}
int main() {
  int n, k;
  cin >> n >> k;
  int *arr = new int[n];
  for (int i = 0; i < n; i++) cin >> arr[i];
  int mask = 0;
  int **dp = new int *[129];
  for (int i = 0; i <= 128; i++) dp[i] = new int[k + 1];
  for (int i = 0; i <= 128; i++) {
    for (int j = 0; j <= k; j++) dp[i][j] = -1;
  }
  int temp = dfs(mask, n, arr, k, dp);
  if (temp == 1)
    cout << "First" << endl;
  else
    cout << "Second" << endl;
}
