#include <bits/stdc++.h>
using namespace std;
template <class T>
bool chmax(T& a, const T& b) {
  if (a < b) {
    a = b;
    return 1;
  }
  return 0;
}
template <class T>
bool chmin(T& a, const T& b) {
  if (b < a) {
    a = b;
    return 1;
  }
  return 0;
}
template <typename T1, typename T2>
pair<T1, T2> operator+(const pair<T1, T2>& l, const pair<T1, T2>& r) {
  return make_pair(l.first + r.first, l.second + r.second);
}
template <typename T1, typename T2>
pair<T1, T2> operator-(const pair<T1, T2>& l, const pair<T1, T2>& r) {
  return make_pair(l.first - r.first, l.second - r.second);
}
const long long int MOD = 1e9 + 7, INF = 1e18;
long long int dp[100001];
long long int N, K, arr[100];
long long int mex(long long int curr) {
  set<long long int> st;
  for (long long int i = (0), i_end_ = (N); i < i_end_; i++) {
    if (curr - arr[i] < 0) continue;
    if (dp[curr - arr[i]] == INF) continue;
    st.insert(dp[curr - arr[i]]);
  }
  for (long long int i = (0), i_end_ = (N); i < i_end_; i++) {
    if (st.find(i) == st.end()) {
      return i;
    }
  }
}
int main() {
  cin >> N >> K;
  for (long long int i = (0), i_end_ = (N); i < i_end_; i++) {
    cin >> arr[i];
  }
  for (long long int i = (0), i_end_ = (K + 1); i < i_end_; i++) dp[i] = INF;
  for (long long int i = (0), i_end_ = (K + 1); i < i_end_; i++) {
    if (i < arr[0])
      dp[i] = 0;
    else
      dp[i] = mex(i);
  }
  if (dp[K] == 0)
    cout << "Second" << endl;
  else
    cout << "First" << endl;
}
