#include <bits/stdc++.h>
using namespace std;
const long double EPS = 1e-9, PI = acos(-1.);
const long long LINF = 0x3f3f3f3f3f3f3f3f, LMOD = 1011112131415161719ll;
const int INF = 0x3f3f3f3f, MOD = 1e9 + 7;
const int N = 1e5 + 5;
int n, k, a[N], memo[N];
set<int> u;
int dp(int x) {
  if (memo[x] >= 0) return memo[x];
  vector<int> v;
  for (int i = 0; i < n; i++)
    if (x - a[i] >= 0) v.push_back(dp(x - a[i]));
  for (auto y : v) u.erase(y);
  memo[x] = *u.begin();
  for (auto y : v) u.insert(y);
  return memo[x];
}
int main() {
  for (int i = 0; i < N; i++) {
    u.insert(i);
    memo[i] = -1;
  }
  scanf("%d%d", &n, &k);
  for (int i = 0; i < n; i++) scanf("%d", &a[i]);
  for (int i = 0; i < N; i++) dp(i);
  printf("%s\n", dp(k) ? "First" : "Second");
  return 0;
}
