#include <bits/stdc++.h>
using namespace std;
struct P {
  int x, y;
  bool operator<(const P &a) const {
    if (x != a.x) return x > a.x;
    return y > a.y;
  }
};
vector<int> v[1], v1;
int i, n, d, m, k, a, b, c, h;
int o[113111];
int l[11311];
int j[1];
int e;
int dx[10] = {0, 1, 0, -1, 1, 1, -1, -1}, dy[10] = {1, 0, -1, 0, 1, -1, 1, -1},
    dz[10] = {0, 0, 0, 0, 1, -1};
long long mod = 1000000007, mod2 = 1000000009, mod3 = 2017;
long long x, z, y;
double pi = 3.14159265;
P u[1];
stack<int> s;
queue<int> q;
char r[2222][1111];
bool as(P a, P b) {
  if (a.x != b.x) return a.x < b.x;
  return a.y < b.y;
}
int f(int m) {
  if (l[m] >= 0) return l[m];
  int n = 0;
  for (int h = 1; h <= a; h++)
    if (m >= o[h]) n = max(n, 1 - f(m - o[h]));
  return l[m] = n;
}
int main() {
  memset(l, -1, sizeof(l));
  scanf("%d %d", &a, &b);
  for (int t = 1; t <= a; t++) scanf("%d", &o[t]);
  if (f(b))
    puts("First");
  else
    puts("Second");
}
