#include<bits/stdc++.h>
using namespace std;
#define FAST ios_base::sync_with_stdio(false);cin.tie(NULL);
#define ll long long int
#define ull unsigned long long int
#define ld long double
#define mod 1000000007
#define inf 1000000000000000007
#define eps 0.000001
#define pi 3.141592653589793
#define pii pair<int , int>
#define pdd pair<ld,ld>
#define pll pair<ll,ll>
#define ff first
#define ss second
#define vii vector<int>
#define vpl vector<pll>
#define vll vector<ll>
#define sti stack <int>
#define stll stack <ll>
#define mseti set <ll>
#define msetd multiset <ll, greater <ll> >
#define mp make_pair
#define pb push_back
#define lb lower_bound
#define ub upper_bound 
#define stp setprecision(20)//use fixed before stp
#define endl '\n'
ld find(ld dp[31][31][31],ll x,ll y,ll z,ll n)
{
    if(x==0&&y==0&&z==0)
        return 0;
    if(dp[x][y][z]!=-1)
        return dp[x][y][z];
    ld ans=0;
    if(x>0)
        ans+=(x*find(dp,x-1,y,z,n));
    if(y>0)
        ans+=(y*find(dp,x+1,y-1,z,n));
    if(z>0)
        ans+=(z*find(dp,x,y+1,z-1,n));
    ans/=((1.0)*(x+y+z));
    ans+=(((1.0)*n)/((1.0)*(x+y+z)));
    dp[x][y][z]=ans;
    return ans;
}
int main()
{  
    FAST
    #ifndef ONLINE_JUDGE
        freopen("input.txt" , "rt" , stdin);
        freopen("output.txt" , "wt" , stdout);
    #endif
    ll n,k;
    cin>>n>>k;
    ll a[n];
    for(ll i=0;i<n;i++)
    {
        cin>>a[i];
    }
    ll ans[k+1]={0};
    for(ll i=0;i<k;i++)
    {
        if(ans[i]==0)
        {
            for(ll j=0;j<n;j++)
            {
                if((i+a[j])<=k)
                {
                    ans[i+a[j]]=1;
                }
            }
        }
    }
    if(ans[k]==1)
        cout<<"First";
    else
        cout<<"Second";
}