#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 dp[100010];
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());
  for (long long i = (long long)1; i < (long long)K; i++) {
    for (long long j = (long long)1; j < (long long)N; j++) {
      if (i - A[j] >= 0 && dp[i - A[j]] == 0) {
        dp[i] = 1;
      }
    }
  }
  if (dp[K]) {
    cout << "First" << endl;
  } else {
    cout << "Second" << endl;
  }
}
