/*
Author: Sagar Gupta
E mail: sagar.june97p@gmail.com
*/

#pragma comment(linker, "/STACK:268435456")
#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;
using namespace std;
#define endl ("\n")
#define deb(n) cerr << #n << " = " << (n) << '\n'
#define FOR(i, n) for (int(i) = 0; (i) < n; (i)++)
#define PI (3.141592653589)
#define ordered_set tree<int, null_type, std::less<int>, rb_tree_tag, tree_order_statistics_node_update>

#define MOD 1000000007

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    cout << fixed;
    cout.precision(10);
    // Those who cannot acknowledge themselves, will invariably fail
    int n, k;
    cin >> n >> k;
    int arr[n];
    for(int i = 0;i < n;i++)
    {
        cin >> arr[i];
    }
    bool game[k+1];
    for(int i = 0;i <= k;i++){
        game[i] = false;
    }
    for(int i = 0;i < n;i++)
    {
        for(int j = arr[i];j <= k;j++)
        {
            if(game[j - arr[i]] == false)
            {
                game[j] = true;
            }
        }
    }
    if(game[k])
    {
        cout << "First";
    }
    else
    {
        cout << "Second";
    }
    
    return 0;
}