#include <bits/stdc++.h>
using namespace std;
inline long long read() {
  long long x = 0, f = 1;
  char c;
  for (c = getchar(); c < '0' || c > '9';
       f = ((c == '-') ? -1 : f), c = getchar())
    ;
  for (; c >= '0' && c <= '9'; x = x * 10 + c - '0', c = getchar())
    ;
  return x * f;
}
template <typename T>
inline void write(T a) {
  if (a == 0) {
    putchar('0');
    return;
  }
  if (a < 0) putchar('-'), a = -a;
  char c1[120];
  int h = 0;
  while (a) c1[++h] = a % 10 + '0', a /= 10;
  for (register int i = h; i >= 1; --i) putchar(c1[i]);
}
inline void write_() { return; }
template <typename T, typename... Args>
inline void write_(T a, Args... b) {
  write(a);
  putchar(' ');
  write_(b...);
}
inline void writeln() {
  putchar('\n');
  return;
}
template <typename T, typename... Args>
inline void writeln(T a, Args... b) {
  write(a);
  putchar(' ');
  writeln(b...);
}
inline long long gcd(long long a, long long b) {
  return a == 0 ? b : gcd(b % a, a);
}
inline long long lcm(long long a, long long b) {
  return 1ll * a / gcd(a, b) * b;
}
inline long long Pow(long long n, long long a) {
  long long b = 1;
  while (a) {
    if (a & 1) b = 1ll * b * n % (int)(1e9 + 7);
    n = 1ll * n * n % (int)(1e9 + 7);
    a >>= 1;
  }
  return b;
}
int n, m, a[120];
bool v[100020], vv;
signed main() {
  n = read(), m = read();
  for (register int i = 1; i <= n; ++i) a[i] = read(), v[a[i]] = 1;
  for (register int i = 1; i <= m; ++i)
    if (!v[i]) {
      vv = 1;
      for (register int j = 1; j <= n; ++j)
        if (i - a[j] >= 0) vv &= v[i - a[j]];
      if (!vv) v[i] = 1;
    }
  if (v[m])
    puts("First");
  else
    puts("Second");
  return 0;
}
