import std.stdio, std.conv, std.string, std.bigint;
import std.math, std.random, std.datetime;
import std.array, std.range, std.algorithm, std.container, std.format;
string read(){ static string[] ss; while(!ss.length) ss = readln.chomp.split; string res = ss[0]; ss.popFront; return res; }

/*

ゲーム Grundy数
mex (minimum extended value)


石の個数がiであるときのGrundy数g[i]は

g[0] = 0
g[i] = mex(a in as && i - a >= 0) (g[i - a])


求めるものは g[k]

*/

void main(){
	int n = read.to!int;
	int k = read.to!int;
	
	int[] as = readln.chomp.split.map!(to!int).array;
	
	int[] g;
	foreach(i; 0 .. k + 1){
		int[] us = as.filter!(a => i - a >= 0).map!(a => g[i - a]).array;
		us.sort();
		g ~= mex(us);
	}
	
	if(g[k] > 0) "First".writeln;
	else "Second".writeln;
}

int mex(int[] xs){ // xsは小さい順にソートされている前提
	int m = 0;
	foreach(x; xs){
		if(x < m) continue;
		else if(x == m) m += 1;
		else return m;
	}
	return m;
}

