#include <bits/stdc++.h>
#pragma GCC target("avx2")
#pragma GCC optimize("O3")
#pragma GCC optimize("unroll-loops")
using namespace std;
const long long MOD = 1E+09 + 7;
const long long INF = 1E18;
const int MAX_N = 100;
const int MAX_K = 1E+05;
int N, K;
int dp[MAX_K + 1], A[MAX_N];
int getGrundy(int k);
int mex(vector<int>& v);
int main() {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);
  cin >> N >> K;
  for (int i = 0; i < N; i++) {
    cin >> A[i];
  }
  sort(A, A + N);
  memset(dp, -1, sizeof(dp));
  if (getGrundy(K) > 0) {
    cout << "First\n";
  } else {
    cout << "Second\n";
  }
  return 0;
}
int getGrundy(int k) {
  if (dp[k] != -1) {
    return dp[k];
  }
  if (k < A[0]) {
    return dp[k] = 0;
  }
  vector<int> v;
  for (int i = 0; i < N; i++) {
    v.push_back(getGrundy(k - A[i]));
  }
  return dp[k] = mex(v);
}
int mex(vector<int>& v) {
  sort(v.begin(), v.end());
  if (v[0] != 0) {
    return 0;
  } else {
    for (int i = 0; i < v.size() - 1; i++) {
      if (v[i] + 1 < v[i + 1]) {
        return v[i] + 1;
      }
    }
    return v[v.size() - 1] + 1;
  }
}
