#include <bits/stdc++.h>
using vi = std::vector<int>;
using namespace std;
long long int gcd(long long int x, long long int y) {
  if (y == 0) return x;
  return gcd(y, x % y);
}
bool bfs(vector<vector<int>> g, vector<int> &dist, int sv) {
  queue<int> q;
  q.push(sv);
  dist[sv] = 0;
  while (!q.empty()) {
    int now = q.front();
    q.pop();
    for (auto v : g[now]) {
      if (dist[v] != -1) continue;
      dist[v] = dist[now] + 1;
      q.push(v);
    }
  }
}
int main(void) {
  int n, k;
  cin >> n >> k;
  vi a(n);
  for (int i = 0; i < n; i++) cin >> a[i];
  vector<bool> dp(n + 1, false);
  for (int r = 1; r < k + 1; r++)
    for (int i = 0; i < n; i++)
      dp[r] = a[i] <= r ? (dp[r] || !dp[r - a[i]]) : dp[r];
  if (dp[k])
    cout << "First" << endl;
  else
    cout << "Second" << endl;
}
