#include <bits/stdc++.h>
using namespace std;
long long MOD = 1000000007;
long long INF = 100000000000000000;
long double EPS = 1e-11;
long double PI = 3.141592653589793238;
template <typename T>
void remove(std::vector<T>& vector, unsigned int index) {
  vector.erase(vector.begin() + index);
}
using Graph = vector<vector<long long>>;
long long N, K;
vector<long long> A;
long long grundy[100010];
long long cnt = 0;
long long dfs(long long x) {
  if (grundy[x] != -1) {
    return grundy[x];
  }
  if (x < A[0]) {
    grundy[x] = 0;
    return 0;
  }
  vector<long long> B;
  for (long long i = (long long)0; i < (long long)N; i++) {
    B.push_back(dfs(x - A[i]));
  }
  long long res = -1;
  for (long long i = (long long)0; i < (long long)101; i++) {
    bool frag = 1;
    for (long long j = (long long)0; j < (long long)B.size(); j++) {
      if (i == B[j]) {
        frag = 0;
        break;
      }
    }
    if (frag) {
      res = i;
      break;
    }
  }
  grundy[x] = res;
  return res;
}
int main() {
  cin >> N >> K;
  for (long long i = (long long)0; i < (long long)N; i++) {
    long long a;
    cin >> a;
    A.push_back(a);
  }
  sort(A.begin(), A.end());
  fill(grundy, grundy + 100010, -1);
  dfs(100);
  dfs(1000);
  dfs(10000);
  dfs(40000);
  dfs(60000);
  dfs(80000);
  if (dfs(K)) {
    cout << "First" << endl;
  } else {
    cout << "Second" << endl;
  }
}
