#include <bits/stdc++.h>
using namespace std;
const int MOD = 1000000007;
const int INF = (1 << 28);
const int dx[4] = {0, 1, 0, -1}, dy[4] = {-1, 0, 1, 0};
const int Dx[8] = {0, 1, 1, 1, 0, -1, -1, -1},
          Dy[8] = {-1, -1, 0, 1, 1, 1, 0, -1};
long long gcd(long long a, long long b) { return b ? gcd(b, a % b) : a; }
long long lcm(long long a, long long b) { return a * b / gcd(a, b); }
struct edge {
  int to, cost;
};
int n, k;
int a[100000];
int main() {
  cin.tie(0);
  ios::sync_with_stdio(false);
  cin >> n >> k;
  for (int i = 0; i < n; i++) {
    cin >> a[i];
  }
  vector<bool> dp(k + 1, false);
  dp[0] = true;
  for (int i = 1; i <= k; i++) {
    bool check = false;
    for (int j = 0; j < n; j++) {
      if (i - a[j] >= 0) check = true;
      if (i - a[j] >= 0 && !dp[i - a[j]]) dp[i] = true;
    }
    if (!check) dp[i] = true;
  }
  if (dp[k] == true)
    cout << "Second"
         << "\n";
  else {
    cout << "First"
         << "\n";
  }
}
