// Original C++ solution (slower):
#include <bits/stdc++.h>

#define gcj "Case #"

#define adj_list vector<vi>

#define endl "\n"

#define INF_INT 2e9

#define INF_LL 2e18

#define matmax 25

#define mod 1000000007

#define mp make_pair

#define pb push_back

#define pi pair<int, int>

#define pii pair<int, pair<int, int> >

#define pl pair<ll, ll>

#define pll pair<ll, pair<ll, ll> >

#define vi vector<int>

#define vl vector<ll>

#define fastio ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);

using namespace std;

typedef long long int ll;



ll pow1(ll a, ll b, ll m = mod)

{

	if (b == 0)

		return 1ll;

	else if (b == 1)

		return a;

	else

	{

		ll x = pow1(a, b/2, m);

		x *= x;

		x %= m;

		if (b%2)

		{

			x *= a;

			x %= m;

		}

		return x;

	}

}



template <class avgType>

avgType avg(avgType a, avgType b) {

	return (a + b)/2;

}



mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());

mt19937_64 rng64(chrono::steady_clock::now().time_since_epoch().count());



int randInt() {

	return rng() % INT_MAX;

}



ll randLL() {

	return rng64() % LLONG_MAX;

}



vector< int > hashmods = {1000000007, 1000000009, 1000000021, 1000000033, 1000000087, 1000000093};



int n, k, a[110], ans[2][110000];



int solve(int mode, int lef) {

	if (ans[mode][lef] != -1)

		return ans[mode][lef];



	if (lef == 0)

		return 0;



	ans[mode][lef] = 0;



	for (int i = 1; i <= n; i++) {

		if (lef >= a[i]) {

			ans[mode][lef] += (1 ^ solve(mode^1, lef - a[i]));

		} else {

			break;

		}

	}



	if (mode == 0 and ans[mode][lef] == 0) {

		ans[mode][lef] = 0;

	} else if (mode == 0) {

		ans[mode][lef] = 1;

	}



	if (mode == 1 and ans[mode][lef] > 0) {

		ans[mode][lef] = 1;

	} else if (mode == 1) {

		ans[mode][lef] = 0;

	}



	//cout<<mode<<" "<<lef<<" "<<ans[mode][lef]<<endl;



	return ans[mode][lef];

}



int main() {

	fastio;

	memset(ans, -1, sizeof(ans));

	cin>>n>>k;



	for (int i = 1; i <= n; i++)

		cin>>a[i];



	int ans = solve(1, k);



	cout<<(ans ? "First\n" : "Second\n");



	return 0;

}

// Optimized solution to the same problem (faster):
#include <bits/stdc++.h>

#define gcj "Case #"

#define adj_list vector<vi>

#define endl "\n"

#define INF_INT 2e9

#define INF_LL 2e18

#define matmax 25

#define mod 1000000007

#define mp make_pair

#define pb push_back

#define pi pair<int, int>

#define pii pair<int, pair<int, int> >

#define pl pair<ll, ll>

#define pll pair<ll, pair<ll, ll> >

#define vi vector<int>

#define vl vector<ll>

#define fastio ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);

using namespace std;

typedef long long int ll;



ll pow1(ll a, ll b, ll m = mod)

{

	if (b == 0)

		return 1ll;

	else if (b == 1)

		return a;

	else

	{

		ll x = pow1(a, b/2, m);

		x *= x;

		x %= m;

		if (b%2)

		{

			x *= a;

			x %= m;

		}

		return x;

	}

}



template <class avgType>

avgType avg(avgType a, avgType b) {

	return (a + b)/2;

}



mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());

mt19937_64 rng64(chrono::steady_clock::now().time_since_epoch().count());



int randInt() {

	return rng() % INT_MAX;

}



ll randLL() {

	return rng64() % LLONG_MAX;

}



vector< int > hashmods = {1000000007, 1000000009, 1000000021, 1000000033, 1000000087, 1000000093};



int n, k, a[110], ans[110000];



int solve(int mode, int lef) {

	if (ans[lef] != -1)

		return ans[lef];



	if (lef == 0)

		return 0;



	ans[lef] = 0;



	for (int i = 1; i <= n; i++) {

		if (lef >= a[i]) {

			ans[lef] += (1 ^ solve(mode^1, lef - a[i]));

		} else {

			break;

		}

	}



	ans[lef] = (ans[lef] > 0);



	return ans[lef];

}



int main() {

	fastio;

	memset(ans, -1, sizeof(ans));

	cin>>n>>k;



	for (int i = 1; i <= n; i++)

		cin>>a[i];



	int fin_ans = solve(1, k);



	cout<<(fin_ans ? "First\n" : "Second\n");



	return 0;

}

// Fastest known solution for this problem: