#include <bits/stdc++.h>
using namespace std;
long long MOD = 1000000007;
long long binary_exp(long long a, long long b) {
  long long ans = 1;
  while (b > 0) {
    if (b & 1) {
      ans = (ans * a) % MOD;
    }
    a = (a * a) % MOD;
    b = b >> 1;
  }
  return ans;
}
class comp {
 public:
  bool operator()(pair<long long, long long> a, pair<long long, long long> b) {
    if (a.first > b.first) {
      return false;
    } else if (a.first == b.first && a.second < b.second) {
      return false;
    } else {
      return true;
    }
  }
};
void bfs(long long s, vector<vector<int> > adj, vector<int> &vis,
         vector<int> &pred) {
  queue<int> q;
  q.push(s);
  vis[s] = 1;
  while (!q.empty()) {
    long long j = q.front();
    q.pop();
    for (auto i : adj[j]) {
      if (vis[i] == 0) {
        q.push(i);
        pred[i] = j;
        vis[i] = 1;
      }
    }
  }
}
map<pair<int, int>, int> mp;
vector<int> ans(1000001, -1);
bool dp(vector<int> &a, int n, int k, int mini) {
  if (k < mini) {
    ans[k] = 0;
    return false;
  }
  if (ans[k] != -1) {
    return ans[k];
  }
  for (int i = 0; i < n; i++) {
    if (dp(a, n, k - a[i], mini) == false) {
      ans[k] = 1;
      return true;
    }
  }
  ans[k] = 0;
  return false;
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  long long T;
  T = 1;
  while (T--) {
    int n, k;
    cin >> n >> k;
    vector<int> a(n);
    int mini = INT_MAX;
    for (int i = 0; i < n; i++) {
      cin >> a[i];
      mini = min(mini, a[i]);
    }
    bool w = dp(a, n, k, mini);
    if (w)
      cout << "First" << endl;
    else
      cout << "Second" << endl;
  }
  return 0;
}
