//######################################## LET'S DO THIS #########################################################//
/* 
Name: Prathamesh S
Motto: To Never Give Up
Linkedin: https://www.linkedin.com/in/prathamesh-shendarkar-1a3411172/
*/

//####################################### Start of Macros ########################################################//
#include <bits/stdc++.h>
//######################################### Containers ###########################################################//
#define all(v) v.begin(),v.end()
#define mem(n,m) memset(n,m,sizeof(n))
#define pii pair<int,int>
#define pll pair<long long,long long>
#define sii set<int>
#define sll set<long long>
#define vii vector<int> 
#define vll vector<long long>
#define mll map<long long, long long>
#define ff first
#define ss second
#define pb push_back
#define pf push_front
#define ins insert
#define mp make_pair
#define len(s) s.length()
//########################################### Loops ##############################################################//
#define loopa(i,a,b) for(i=a;i<=b;i++)
#define loop(i,n) for(i=0;i<n;i++)
#define pool(i,n) for(i=n-1;i>=0;i--)
#define poop(i,a,b) for(i=a;i>=b;i--)
//########################################## Debugging ###########################################################//
#define on cout<<endl
#define o2(a,b) cout<<a<<" "<<b
#define debug(a) cout<<a<<"\n";
#define os cout<<" "
//########################################## Ends/Bounds #########################################################//
#define lob lower_bound
#define upb upper_bound
#define ret return 0
//########################################## Containers ##########################################################//
#define present(s,x) (s.find(x) != s.end()) 
#define cpresent(s,x) (find(all(s),x) != s.end()) 
#define ford(container, it) for(__typeof(container.begin()) it = container.begin(); it != container.end(); it++) 
#define fors(container, it, a, b) for(__typeof(container.begin()) it = a; it != b; it++) 
//############################################# Size #############################################################//
#define fastio ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
#define mod 1000000007
#define EPSILON 1e-9
#define PI 3.14159265358979323846
#define inf 999999999999999999
#define siz 100001
#define SIZ 1000001
#define SIZE 200001
//############################################ typedefs #########################################################//
typedef long long  ll;
typedef long double ldo;
typedef double db;
//########################################## End of Macros ######################################################//
using namespace std;

//######################################### Start of Program ####################################################//
int main(){
	fastio
	
	ll n, k;
	cin >> n >> k;
	vector<ll> v(n);
	vector<ll> dp(k + 1, 0);
	
	for(ll i = 0;i<n;i++){
		cin >> v[i];
		dp[v[i]]++;
	}
	
	// Here I need to biased and make taro win
	ll mini = *min_element(v.begin(), v.end());
	
	for(ll i = mini + 1;i<=k;i++){
		if(dp[i] == 0){
			// Here i need to check if my k is making any odd number or not with denom
			ll flag = 0;
			for(ll j = 0;j<n;j++){
				if(i - v[j] > 0 && dp[(i - v[j])]%2 == 0){
					dp[i] = dp[(i - v[j])] + 1; // This means first is the winner
					flag = 1;
					break;
				}
			}
			if(flag != 1){
				dp[i] = dp[i - v[0]] + 1; // That means second is the winner
			}
		}
	}
	
	if(dp[k]%2 == 0){
		cout << "Second" << "\n";
	}else {
		cout << "First" << "\n";
	}
	
}




/*

*/
//######################################### End of Program ######################################################//

Measured memory_bytes: 1024