#include <bits/stdc++.h>
using namespace std;
bool find1(int k, vector<int>& ar, int n, int turn);
bool find2(int k, vector<int>& ar, int n, int turn) {
  if (k < ar[0]) {
    if (turn == 1)
      return false;
    else
      return true;
  }
  if (find(ar.begin(), ar.end(), k) != ar.end()) {
    if (turn == 0)
      return false;
    else
      return true;
  }
  for (int i = 0; ar[i] <= k && i < n; i++) {
    if (!find1(k - ar[i], ar, n, turn ^ 1)) return true;
  }
  return false;
}
bool find1(int k, vector<int>& ar, int n, int turn) {
  if (k < ar[0]) {
    if (turn == 0)
      return false;
    else
      return true;
  }
  if (find(ar.begin(), ar.end(), k) != ar.end()) {
    if (turn == 1)
      return false;
    else
      return true;
  }
  for (int i = 0; ar[i] <= k && i < n; i++) {
    if (!find2(k - ar[i], ar, n, turn ^ 1)) return true;
  }
  return false;
}
int main() {
  int n, k;
  cin >> n >> k;
  vector<int> ar(n);
  for (int i = 0; i < n; i++) cin >> ar[i];
  sort(ar.begin(), ar.end());
  if (find1(k, ar, n, 0))
    cout << "First";
  else
    cout << "Second";
}
