#include <bits/stdc++.h>
using namespace std;
template <typename T>
void scani(T &x) {
  x = 0;
  register bool _ = 0;
  register T c = getchar_unlocked();
  _ = c == 45;
  c = _ ? getchar_unlocked() : c;
  while (c < 48 || c > 57) c = getchar_unlocked();
  for (; c < 48 || c > 57; c = getchar_unlocked())
    ;
  for (; c > 47 && c < 58; c = getchar_unlocked())
    x = (x << 3) + (x << 1) + (c & 15);
  x = _ ? -x : x;
}
template <typename T>
void printi(T n) {
  register bool _ = 0;
  _ = n < 0;
  n = _ ? -n : n;
  char snum[65];
  int i = 0;
  do {
    snum[i++] = n % 10 + 48;
    n /= 10;
  } while (n);
  --i;
  if (_) putchar_unlocked(45);
  while (i >= 0) putchar_unlocked(snum[i--]);
  putchar_unlocked(10);
}
string nextstring() {
  string r;
  register char c = getchar_unlocked();
  while (c == 32 || c == 10) c = getchar_unlocked();
  while (!(c == 32 || c == 10)) {
    r += c;
    c = getchar_unlocked();
  }
  return r;
}
char nextgetchar() {
  register char c = getchar_unlocked();
  while (c == 32 || c == 10) c = getchar_unlocked();
  return c;
}
void prints(string k) {
  for (int i = 0; i < k.length(); i++) putchar_unlocked(k[i]);
}
void scani() {}
template <typename First, typename... Ints>
void scani(First &arg, Ints &...rest) {
  scani(arg);
  scani(rest...);
}
int N, K, a[102], dp[100002];
int main() {
  scani(N, K);
  for (int i = 0; i < N; i++) scani(a[i]);
  for (int i = 0; i <= K; i++) {
    for (int j = 0; j < N && !dp[j]; j++) {
      if (a[j] <= i && !dp[i - a[j]]) dp[i] = true;
    }
  }
  prints(dp[K] ? "First" : "Second");
  return 0;
}
