#include <bits/stdc++.h>
using namespace std;
template <class A, class B>
ostream& operator<<(ostream& out, const pair<A, B>& p) {
  return out << "(" << p.first << ", " << p.second << ")";
}
template <class A>
ostream& operator<<(ostream& out, const vector<A>& v) {
  out << "[";
  for (long long i = 0; i < v.size(); i++) {
    if (i) out << ", ";
    out << v[i];
  }
  return out << "]";
}
template <class A, class B>
ostream& operator<<(ostream& out, const set<A, B>& s) {
  out << "[";
  for (auto i = s.begin(); i != s.end(); i++) {
    out << ", ";
    out << *i;
  }
  return out << "]";
}
template <class A>
ostream& operator<<(ostream& out, const set<A>& s) {
  out << "[";
  for (auto i = s.begin(); i != s.end(); i++) {
    out << ", ";
    out << *i;
  }
  return out << "]";
}
const long long N = 1e5 + 10;
long long a[110];
long long dp[N];
long long n;
long long solve(long long k) {
  if (dp[k] != 0) {
    return dp[k];
  }
  if (k < a[0]) {
    dp[k] = -1;
    return -1;
  }
  bool win = false;
  for (long long i = 0; i < n; i++) {
    if (solve(k - a[i]) == -1) {
      win = true;
    }
  }
  dp[k] = (win ? 1 : -1);
  return dp[k];
}
int32_t main() {
  long long k;
  cin >> n >> k;
  for (long long i = 0; i < n; i++) cin >> a[i];
  cout << (solve(k) == 1 ? "First" : "Second");
}
