#include <bits/stdc++.h>
using namespace std;
const int INF = INT_MAX;
const int MOD = pow(10, 9) + 7;
int dy[] = {0, 0, 1, -1, 0};
int dx[] = {1, -1, 0, 0, 0};
template <typename T>
istream& operator>>(istream& is, vector<T>& vec) {
  for (T& x : vec) is >> x;
  return is;
}
template <typename T>
ostream& operator<<(ostream& os, vector<T>& vec) {
  for (int i = 0; i < vec.size(); i++) {
    os << vec[i] << (i + 1 == vec.size() ? "" : " ");
  }
  return os;
}
const int MAX_SIZE = 100005;
bool memo[MAX_SIZE];
bool visited[MAX_SIZE];
vector<int> a;
int N, K;
int main() {
  cin >> N >> K;
  a.resize(N + 1);
  for (auto i = 1; i <= N; i++) cin >> a[i];
  for (auto i = 1; i < a[1]; i++) {
    memo[i] = false;
  }
  for (auto i = a[1]; i < a[N] + a[1]; i++) {
    memo[i] = true;
  }
  bool win = false;
  for (auto i = a[N] + a[1]; i <= K; i++) {
    win = false;
    for (auto j = 1; j <= N; j++) {
      if (i - a[j] >= 0) {
        if (memo[i - a[j]] == false) {
          win = true;
          memo[i] = true;
          break;
        }
      }
    }
  }
  if (memo[K]) {
    cout << "First" << endl;
  } else {
    cout << "Second" << endl;
  }
  return 0;
}
