#include using namespace std; #define ALL(x) x.begin(),x.end() #define rep(i,n) for(int i=0;i<(n);i++) #define debug(v) cout<<#v<<":";for(auto x:v){cout<bool chmax(T &a,const T &b){if(abool chmin(T &a,const T &b){if(b ostream &operator<<(ostream &os,const pair&p){ os< ostream &operator<<(ostream &os,const vector&v){ for(int i=0;i<(int)v.size();i++) os< istream &operator>>(istream &is,pair&p){ is>>p.first>>p.second; return is; } template istream &operator>>(istream &is,vector&v){ for(T &x:v)is>>x; return is; } /* a[i]-1個取る,1個残す a[i]個取って-mのペナを受ける しか候補がない,とかじゃないと解けないだろ */ signed main(){ int n;ll m;cin>>n>>m; vector a(n); cin>>a; assert(m!=0); if(m==0){ ll r=0; sort(ALL(a));reverse(ALL(a)); rep(i,n)r+=(i%2?-a[i]:a[i]); if(r==0) cout<<"Second"<> que; rep(i,n){ if(a[i]!=1) que.push({a[i]-1,true}); else que.push({1-m,false}); } ll res=0; int i=0; while(!que.empty()){ auto [t,f]=que.top();que.pop(); if(i%2)res-=t; else res+=t; if(f)que.push({1-m,false}); i++; } if(res<=0) cout<<"Second"<