#include <bits/stdc++.h>
const long long int MOD = 1e9 + 7;
const long long int INF = 1011111111;
const long long int LLINF = 1000111000111000111LL;
const long double EPS = 1e-10;
const long double PI = 3.14159265358979323;
using namespace std;
inline long long int add(long long int a, long long int b) {
  a += b;
  if (a >= MOD) a -= MOD;
  return a;
}
inline long long int sub(long long int a, long long int b) {
  a -= b;
  if (a < 0) a += MOD;
  return a;
}
inline long long int mul(long long int a, long long int b) {
  return (a * 1ll * b) % MOD;
}
long long int power(long long int base, long long int exponent) {
  long long int ans = 1;
  while (exponent != 0) {
    if (exponent & 1) ans = (1LL * ans * base);
    base = (1LL * base * base);
    exponent >>= 1;
  }
  return ans;
}
vector<long long int> v;
long long int n;
const long long int N = 1e5 + 5;
long long int grundy[N];
long long int precompute(long long int num) {
  if (num < v[0]) return grundy[num] = 0;
  if (grundy[num] != -1)
    return grundy[num];
  else {
    set<long long int> for_mex;
    for (long long int i = 0; i < n; i++) {
      if (num >= v[i]) {
        for_mex.insert(precompute(num - v[i]));
      }
    }
    for (long long int i = 0;; i++) {
      if (for_mex.count(i) == 0) {
        return grundy[num] = i;
      }
    }
  }
}
int32_t main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  memset(grundy, -1, sizeof grundy);
  long long int m, i, j, k;
  cin >> n >> k;
  if (n == 1 && v[0] == 1) {
    if (k % 2 == 0)
      cout << "Second";
    else
      cout << "First";
    return 0;
  }
  v.resize(n);
  for (i = 0; i < n; i++) cin >> v[i];
  sort(v.begin(), v.end());
  long long int x = 0;
  for (i = 0; i < n; i++) {
    if (k >= v[i]) x = x ^ precompute(k - v[i]);
  }
  if (x == 0)
    cout << "Second";
  else
    cout << "First";
  cerr << '\n'
       << "Time elapsed : " << clock() * 1000.0 / CLOCKS_PER_SEC << " ms"
       << '\n';
}
