#include <bits/stdc++.h>
using namespace std;
long long int pow1(long long int a, long long int b,
                   long long int m = 1000000007) {
  if (b == 0)
    return 1ll;
  else if (b == 1)
    return a;
  else {
    long long int x = pow1(a, b / 2, m);
    x *= x;
    x %= m;
    if (b % 2) {
      x *= a;
      x %= m;
    }
    return x;
  }
}
template <class avgType>
avgType avg(avgType a, avgType b) {
  return (a + b) / 2;
}
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
mt19937_64 rng64(chrono::steady_clock::now().time_since_epoch().count());
int randInt() { return rng() % INT_MAX; }
long long int randLL() { return rng64() % LLONG_MAX; }
vector<int> hashmods = {1000000007, 1000000009, 1000000021,
                        1000000033, 1000000087, 1000000093};
int n, k, a[110], ans[2][110000];
int solve(int mode, int lef) {
  if (ans[mode][lef] != -1) return ans[mode][lef];
  if (lef == 0) return 1;
  ans[mode][lef] = 0;
  for (int i = 1; i <= n; i++) {
    if (lef >= a[i]) {
      int curr = solve(mode ^ 1, lef - a[i]);
      ans[mode][lef] += curr;
    }
  }
  if (mode == 0 and ans[mode][lef] == 0) {
    ans[mode][lef] = 1;
  } else if (mode == 0) {
    ans[mode][lef] = 0;
  }
  if (mode == 1 and ans[mode][lef] > 0) {
    ans[mode][lef] = 1;
  } else if (mode == 1) {
    ans[mode][lef] = 0;
  }
  return ans[mode][lef];
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  ;
  memset(ans, -1, sizeof(ans));
  cin >> n >> k;
  for (int i = 1; i <= n; i++) cin >> a[i];
  int ans = solve(1, k);
  cout << (ans ? "First\n" : "Second\n");
  return 0;
}
