#include <bits/stdc++.h>
using namespace std;
const int inf = 1e9 + 7;
const int max_n = 110, max_k = 100010, first = 0, second = 1;
int n, k, a[max_n], dp[max_k];
int f(int cnt) {
  if (cnt <= 0) return false;
  if (dp[cnt] != -1) {
    return dp[cnt];
  }
  int res = !f(cnt - a[0]);
  for (int i = 1; i < (n); i++) {
    res = res && (!f(cnt - a[i]));
  }
  return dp[cnt] = res;
}
int main() {
  int mn = inf;
  cin >> n >> k;
  memset(dp, -1, sizeof dp);
  for (int i = 0; i < (n); i++) {
    cin >> a[i];
    mn = min(a[i], mn);
  }
  for (int i = 0; i < (n); i++) {
    dp[a[i]] = true;
  }
  for (int i = 0; i < (mn); i++) {
    dp[i] = false;
  }
  f(k);
  cout << (f(k) ? "First" : "Second") << endl;
  return 0;
}
