#include #include #include #include #include #include #include #include #include static const int MOD = 1000000007; using ll = long long; using u32 = unsigned; using u64 = unsigned long long; using namespace std; template constexpr T INF = ::numeric_limits::max() / 32 * 15 + 208; int main() { int n; ll x; cin >> n >> x; vector A(n); for (auto &&i : A) scanf("%lld", &i); if(accumulate(A.begin(),A.end(), 0LL) <= x){ puts("Draw"); return 0; } vector dp(1< int { if(~dp[b]) return dp[b]; for (int i = 0; i < n; ++i) { if(!(b & (1 << i))){ if(val-A[i] < 0) continue; if(!f(b|(1 << i), val-A[i], f)) return dp[b] = 1; } } return dp[b] = 0; }; puts(dfs(0, x, dfs) ? "First" : "Second"); return 0; }