#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using ld = long double;
using Graph = vector<vector<int>>;
using que_a = priority_queue<int, vector<int>, greater<int>>;
using que_d = priority_queue<int>;
using pint = pair<int, int>;
template <class T>
inline bool chmax(T& a, T b) {
  if (a < b) {
    a = b;
    return true;
  }
  return false;
}
template <class T>
inline bool chmin(T& a, T b) {
  if (a > b) {
    a = b;
    return true;
  }
  return false;
}
int n, k;
vector<int> a;
vector<int> dp;
int rec(int key) {
  if (dp.at(key) != -1) return dp.at(key);
  int res = -1;
  for (int go : a) {
    if (key - go >= 0) {
      if (res != -1 && rec(key - go) == res)
        return 1;
      else
        res = abs(1 - rec(key - go));
    }
  }
  return dp.at(key) = res;
}
int main() {
  cin >> n >> k;
  a.resize(n);
  for (int i = 0; i < n; i++) cin >> a.at(i);
  dp.assign(k + 1, -1);
  for (int i = 0; i < a.at(0); i++) dp.at(i) = 0;
  string ans = rec(k) ? "First" : "Second";
  cout << ans << endl;
  return 0;
}
