uses math;
const fi='kstones.inp';
      fo='kstones.out';
      maxn=100;
var n,k,mmin:int32;
    a:array[1..maxn] of int32;
    f:array[0..100000] of boolean;
//=============================
procedure nhap;
var i:int32;
begin
   readln(n,k);
   mmin:=maxlongint;
   for i:=1 to n do
   begin read(a[i]); mmin:=min(mmin,a[i]); end;
end;
//=============================
procedure xuli;
var i,j:int32;
    ok:boolean;
begin
   fillchar(f,sizeof(f),false);
   for i:=mmin to k do
   begin
    ok:=false;
    for j:=1 to n do
    if i>=a[j] then
    if not f[i-a[j]] then
     begin
        ok:=true; break;
     end;
    f[i]:=ok;
   end;
   if f[k] then write('First') else write('Second');
end;
//=============================
begin
   assign(input,fi); reset(input);
   assign(output,fo); rewrite(output);
   nhap;
   xuli;
   close(input); close(output);
end.
