#include <bits/stdc++.h>
using namespace std;
vector<long> moves;
vector<long> dp;
unordered_set<long> moove;
int calculateMex(unordered_set<int> Set) {
  int Mex = 0;
  while (Set.find(Mex) != Set.end()) Mex++;
  return (Mex);
}
long grundy(long n) {
  if (dp[n] != -1) return dp[n];
  if (n <= 0) return 0;
  unordered_set<int> s;
  for (int i = 0; i < moves.size(); i++) {
    s.insert(grundy(n - moves[i]));
  }
  dp[n] = calculateMex(s);
  return dp[n];
}
int main() {
  long n, k;
  cin >> n >> k;
  dp.resize(k + 1, -1);
  moves.resize(n);
  for (int i = 0; i < n; i++) {
    cin >> moves[i];
    moove.insert(moves[i]);
  }
  if (grundy(k) == 0)
    cout << "Second";
  else
    cout << "First";
  return 0;
}
