#include <bits/stdc++.h>
#define range(i, a, b) for (int i = (a); i < (b); i++)
#define rep(i, b) for (int i = 0; i < (b); i++)
#define ranger(i, a, b) for (int i = (a)-1; i >= (b); i--)
#define repr(i, b) for (int i = (b)-1; i >= 0; i--)
#define all(a) (a).begin(), (a).end()
#define show(x) cerr << #x << " = " << (x) << endl;
#define int long long
using namespace std;

template <typename X, typename T>
auto vectors(X x, T a) {
	return vector<T>(x, a);
}
template <typename X, typename Y, typename Z, typename... Zs>
auto vectors(X x, Y y, Z z, Zs... zs) {
	auto cont = vectors(y, z, zs...);
	return vector<decltype(cont)>(x, cont);
}

template <typename T>
ostream& operator<<(ostream& os, vector<T>& v) {
	rep(i, v.size()) { os << v[i] << (i == v.size() - 1 ? "" : " "); }
	return os;
}
template <typename T, typename S>
ostream& operator<<(ostream& os, pair<T, S>& p) {
	os << '(' << p.first << ',' << p.second << ')';
	return os;
}
template <typename T>
istream& operator>>(istream& is, vector<T>& v) {
	for (T& x : v) { is >> x; }
	return is;
}

int k;
int memo[100005];
vector<int> a;

int grundy(int n) {
	if(n < 0) return -1;
	auto& p = memo[n];
	if (p != -1) return p;

	set<int> s;
	rep(i, a.size()) {
		s.emplace(grundy(n - a[i]));
	}

	int res = 0;
	while (s.count(res)) res++;
	return p = res;
}

signed main() {
	int n;
	cin >> n >> k;
	a = vector<int>(n);
	cin >> a;

	rep(i,10005) memo[i]=-1;
	memo[0]=0;
	if (grundy(k)) {
		cout << "First" << endl;
	} else {
		cout << "Second" << endl;
	}
}
