#include <bits/stdc++.h>
using namespace std;
template <class T>
inline bool read(T &x) {
  int c = getchar();
  int sgn = 1;
  while (~c && c < '0' || c > '9') {
    if (c == '-') sgn = -1;
    c = getchar();
  }
  for (x = 0; ~c && '0' <= c && c <= '9'; c = getchar()) x = x * 10 + c - '0';
  x *= sgn;
  return ~c;
}
inline long long int exp(long long int a, long long int p) {
  if (p == 0) return 1;
  long long int x = exp(a, p / 2) % 1000000007;
  x = (x * x) % 1000000007;
  if (p & 1) x = (x * (a % 1000000007)) % 1000000007;
  return x;
}
inline int add(int a, int b) {
  a += b;
  if (a >= 1000000007) a -= 1000000007;
  return a;
}
inline int sub(int a, int b) {
  a -= b;
  if (a < 1000000007) a += 1000000007;
  return a;
}
inline int multi(long long int a, long long int b) {
  a *= b;
  if (a >= 1000000007) a %= 1000000007;
  return a;
}
inline int on_bit(int N, int pos) { return N = N | (1 << pos); }
inline int off_bit(int N, int pos) { return N = N & ~(1 << pos); }
inline bool check_bit(long long int N, int pos) {
  return (bool)(N & (1 << pos));
}
int n, k;
int ar[105];
int dp[100005][5];
int solve(int stones, int player) {
  if (player) {
    int ret = 0;
    for (int i = 0; i < n; ++i) {
      if (ar[i] <= stones) {
        if (solve(stones - ar[i], player ^ 1) == 0) {
          ret = 1;
        }
      }
    }
    return dp[stones][player] = ret;
  } else {
    int ret = 0;
    for (int i = 0; i < n; ++i) {
      if (ar[i] <= stones) {
        if (solve(stones - ar[i], player ^ 1) == 0) {
          ret = 1;
        }
      }
    }
    return dp[stones][player] = ret;
  }
}
int main() {
  cin >> n >> k;
  for (int i = 0; i < n; i++) cin >> ar[i];
  memset((dp), -1, sizeof((dp)));
  if (solve(k, 1))
    cout << "First\n";
  else
    cout << "Second\n";
  return 0;
}
