#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp> 
#include <ext/pb_ds/tree_policy.hpp> 

using namespace std;
using namespace __gnu_pbds; 

# define ll long long
# define pll pair<ll,ll>
# define F first
# define S second
# define pb push_back
# define ld long double
# define vll vector<ll>
# define vpll vector<pll>
# define ppll pair<pll,ll>
ll M=1000000007;
ll MAX=LONG_LONG_MAX;
template<typename T>
using ordered_set=tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;
ll power(ll a,ll m,ll mod){
	ll ans=1;
	while(m){
		if(m%2){
			ans*=a;
			ans%=(mod);
		}
		a=(a*a)%(mod);
		m>>=1;
	}
	return ans;
}

int main()
    {
        ios_base::sync_with_stdio(false);
        cin.tie(0);
        cout.tie(0);
        ll t=1;
      //  cin>>t;
        while(t--)
        {
         ll n,i,j,k,x=INT_MAX,m,a;
         cin>>n>>k;
         vector<ll>v(n);
         vector<bool>dp(k+1,0);
         for(i=0;i<n;i++)
         {
             cin>>a;
             v[i]=a;
             x=min(x,a);
             dp[a]=1;
         }
         for(i=x+1;i<=k;i++)
         {
             if(dp[i])
             continue;
             for(j=0;j<n;j++)
             {
                 if(dp[i-v[j]]==0)
                 {
                     dp[i]=1;
                     break;
                 }
             }
         }
         if(dp[k])
         cout<<"First\n";
         else
         cout<<"Second\n";
         
         
         
         
       
        }
        
    }