#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using ld = long double;
using pii = std::pair<int, int>;
mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());
template <class T>
T rnd_IntType(T a, T b) {
  return uniform_int_distribution<T>(a, b)(rng);
}
template <class T>
T rnd_RealType(T a, T b) {
  return uniform_real_distribution<T>(a, b)(rng);
}
ll fastpow(ll a, ll ex) {
  ll res = 1;
  while (ex) {
    if (ex & 1) res *= a;
    a *= a;
    ex >>= 1;
  }
  return res;
}
ll fastpow(ll a, ll ex, ll m) {
  a %= m;
  ll res = 1;
  while (ex) {
    if (ex & 1) res = (a * res) % m;
    a = (a * a) % m;
    ex >>= 1;
  }
  return res;
}
ll modinverse(ll a, ll m) {
  ll m0 = m;
  ll y = 0, x = 1;
  while (a > 1) {
    ll q = a / m;
    a %= m;
    swap(a, m);
    x -= q * y;
    swap(x, y);
  }
  if (x < 0) x += m0;
  return x;
}
template <typename T>
ostream &operator<<(ostream &os, const set<T> &v) {
  for (T i : v) os << i << ' ';
  return os;
}
template <typename T>
ostream &operator<<(ostream &os, const vector<T> &v) {
  for (T i : v) os << i << ' ';
  return os;
}
template <typename T>
ostream &operator<<(ostream &os, const deque<T> &v) {
  for (T i : v) os << i << ' ';
  return os;
}
template <typename T, typename second>
ostream &operator<<(ostream &os, const pair<T, second> &v) {
  os << "(" << v.first << "=>" << v.second << ") ";
  return os;
}
template <typename T, typename second>
ostream &operator<<(ostream &os, const map<T, second> &v) {
  for (auto i : v) os << i << ' ';
  return os;
}
const int modulo1 = 1e9 + 7;
const int modulo2 = 998244353;
const int mod = 1e9 + 7;
ll add(ll a, ll b) { return (a + b) % mod; }
ll sub(ll a, ll b) { return (a - b) % mod; }
ll mul(ll a, ll b) { return (a * b) % mod; }
signed main() {
  std::ios::sync_with_stdio(false);
  std::cin.tie(nullptr);
  int n, k;
  cin >> n >> k;
  vector<int> a(n);
  for (auto &i : a) cin >> i;
  vector<vector<bool>> dp(n, vector<bool>(k + 1, -1));
  for (int i = 0; i <= k; ++i) {
    if (i < a[0])
      dp[0][i] = false;
    else
      dp[0][i] = !dp[0][i - a[0]];
  }
  for (int i = 1; i < n; ++i) {
    for (int j = 0; j <= k; ++j) {
      dp[i][j] = dp[i - 1][j];
      if (j >= a[i]) dp[i][j] = dp[i][j] || !dp[i][j - a[i]];
    }
  }
  cout << (dp[n - 1][k] ? "First\n" : "Second\n");
}
