#include <bits/stdc++.h>
#define int long long
#define endl "\n"
#define fastio ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define pb(x) push_back(x)
#define mp(a,b) make_pair(a,b)
#define ms(v,x) memset(v,x,sizeof(v))
#define pii pair<int,int>
#define ff first
#define ss second
#define frr(i,n) for(int i=0;i<n;i++)
#define inf 1000000000 // 1e9
#define M   1000000007 // 1e9 + 7
using namespace std;
inline int mod(int n, int m){ int ret = n%m; if(ret < 0) ret += m; return ret; }
int gcd(int a, int b){return (b == 0 ? a : gcd(b, a%b));}
int exp(int a,int b,int m){
    if(b==0) return 1;
    if(b==1) return mod(a,m);
    int k = mod(exp(a,b/2,m),m);
    if(b&1){
        return mod(a*mod(k*k,m),m);
    }
    else return mod(k*k,m);
}
struct node{
 	int x,y,d,k;
};
int dist(int x1,int y1,int x2,int y2){
    return abs(x1-x2)+abs(y1-y2); 	            	
}
int32_t main(){
    fastio;
    int n,k,menor = inf;
    cin >> n >> k;
    vector<int> v(n);
    for(int i=0;i<n;i++){
        cin >> v[i];
        menor = min(v[i],menor);
    }
    bool dp[k+1] = {0};
    string res[] = {"Second\n","First\n"};  
    bool ans = 0;
    for(int i=k;i>=0;i--){
        for(int j=0;j<n;j++){
            if(i-v[j] >= 0){
                dp[i-v[j]] = !dp[i];
            }
        }
        if(i<menor){
            ans = max(ans,dp[i]);
        }
    }
    cout << res[ans] << endl;
} 