#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; int N,dp[1 << 20]; long long V,A[20]; int dfs(int s) { if(dp[s] >= 0) return dp[s]; long long S = 0; for(int i = 0;i < N;i++) if(s >> i & 1) S += A[i]; if(S > V) return dp[s] = 1; for(int i = 0;i < N;i++) if(!(s >> i & 1) && !dfs(s|1 << i)) return dp[s] = 1; return dp[s] = 0; } void solve() { cin >> N >> V; long long S = 0; for(int i = 0;i < N;i++) cin >> A[i],S += A[i]; if(V >= S) { cout << "Draw" << endl; return; } for(int i = 0;i < 1 << N;i++) dp[i] = -1; cout << (dfs(0) ? "First":"Second") << endl; } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int tt = 1; //cin >> tt; while(tt--) solve(); }