#include <bits/stdc++.h>
using namespace std;
const int INTINF = 1e9;
const long long LLINF = 1e18;
bool dp[2][int(1e5 + 5)];
bool flag[int(1e5 + 5)];
int a[101];
int N;
int min_a = INTINF;
bool dfs(int turn, int k) {
  if (flag[k]) return dp[turn][k];
  flag[k] = true;
  if (k < min_a) {
    dp[turn][k] = (turn == 1);
    dp[1 - turn][k] = !dp[turn][k];
    return dp[turn][k];
  }
  if (turn == 0) {
    bool win = false;
    for (int i = 0, i_len = (N); i < i_len; ++i) {
      win = win or dfs(1 - turn, k - a[i]);
    }
    dp[turn][k] = win;
    dp[1 - turn][k] = !dp[turn][k];
    return dp[turn][k];
  } else {
    bool win = true;
    for (int i = 0, i_len = (N); i < i_len; ++i) {
      win = win and dfs(1 - turn, k - a[i]);
    }
    dp[turn][k] = win;
    dp[1 - turn][k] = !dp[turn][k];
    return dp[turn][k];
  }
}
void solve() {
  cin >> N;
  int K;
  cin >> K;
  for (int i = 0, i_len = (N); i < i_len; ++i) {
    cin >> a[i];
    min_a = min(a[i], min_a);
  }
  cout << (dfs(0, K) ? "First" : "Second") << endl;
}
int main(int argc, char const *argv[]) {
  cin.tie(0);
  ios::sync_with_stdio(false);
  std::cout << std::fixed << std::setprecision(10);
  solve();
  return 0;
}
