import std.stdio, std.array, std.string, std.conv, std.algorithm; import std.typecons, std.range, std.random, std.math, std.container; import std.numeric, std.bigint, core.bitop, core.stdc.stdlib, std.datetime; void main() { auto s = readln.split.map!(to!long); auto N = s[0].to!int; auto V = s[1]; auto A = readln.split.map!(to!long).array; if (A.sum <= V) { writeln("Draw"); return; } auto mem = new int[](1 << N); mem[] = -1; int rec(int mask, long vol) { if (mem[mask] != -1) return mem[mask]; if (vol > V) return mem[mask] = 1; mem[mask] = 0; foreach (i; 0..N) if (!(mask & (1 << i))) { mem[mask] |= !rec(mask | (1 << i), vol + A[i]); } return mem[mask]; } writeln(rec(0, 0) ? "First" : "Second"); }