#include <bits/stdc++.h>
using namespace std;
const long long INF = 1LL << 60;
const int MOD = 1000000000 + 7;
template <typename tuple<long long, long long, long long> >
inline string toString(const tuple<long long, long long, long long> &a) {
  ostringstream oss;
  oss << a;
  return oss.str();
};
int n;
int a[110];
bool dp[100010][110];
bool done[100010][110] = {false};
bool func(int i, int j) {
  if (done[i][j]) return dp[i][j];
  if (i < a[j]) {
    done[i][j] = true;
    return dp[i][j] = false;
  }
  bool ok = false;
  for (int k = 0; k < (n); k++) {
    ok |= func(i - a[j], k);
  }
  done[i][j] = true;
  return dp[i][j] = !(ok);
}
int main(int argc, char const *argv[]) {
  int k;
  cin >> n >> k;
  for (int i = 0; i < (n); i++) cin >> a[i];
  bool fir = false;
  for (int i = 0; i < (n); i++) {
    fir |= func(k, i);
  }
  if (fir)
    cout << "First" << endl;
  else
    cout << "Second" << endl;
  return 0;
}
