#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#define F first
#define S second
#define PB push_back
#define REP(i,a,b) for (int i = a ; i <= b ; i++)
#define REPI(i,a,b) for (int i = a ; i >= b ; i--)
using namespace __gnu_pbds;
using namespace std;

typedef long long ll;
typedef vector<int> vi;
typedef pair<int,int> pi;
typedef tree<int,null_type,less<int>,rb_tree_tag,tree_order_statistics_node_update> indexed_set;

const int OO = 1e9+7;
const int MOD = 1e9+7;
const int N = 1e5+7;

int n,k;
int a[N];
int mem[2][N];

int dp(bool p,int sum)
{
    if (sum < 0) return !p;
    int &ret = mem[p][sum];
    if (ret != -1) return ret;
    if (sum == 0) return ret = !p;
    ret = !p;
    if (!p)
    {
        REP(i,0,n-1)
        {
            ret = min(ret,dp(!p,sum-a[i]));
        }
    }
    else
    {
        REP(i,0,n-1)
        {
            ret = max(ret,dp(!p,sum-a[i]));
        }
    }
    return ret;
}

int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);cout.tie(0);
    //freopen("teleport.in","r",stdin);
    //freopen("teleport.out","w",stdout);
    memset(mem,-1,sizeof mem);
    cin >> n >> k;
    REP(i,0,n-1) cin >> a[i];
    if (dp(1,k)) cout << "First" << endl;
    else cout << "Second" << endl;
    return 0;
}
