import times, strutils, sequtils, math, algorithm, tables, sets, lists, intsets import critbits, future, strformat, deques,heapqueue template `max=`(x,y) = x = max(x,y) template `min=`(x,y) = x = min(x,y) template `mod=`(x,y) = x = x mod y template scan2 = (scan(), scan()) template scan3 = (scan(), scan()) let read* = iterator: string {.closure.} = while true: (for s in stdin.readLine.split: yield s) proc scan(): int = read().parseInt proc scanf(): float = read().parseFloat proc toInt(c:char): int = return int(c) - int('0') proc solve()= var n = scan() m = scan() a = newseqwith(n,scan()) memo = initTable[(int,int),int]() # dfs:idx目の山にlastNum個残っている場合に取れる最高点 proc dfs(idx:int,lastNum:int):int= var lastNum = lastNum if idx==n: return 0 if lastNum == -1: lastNum = a[idx] if memo.haskey((idx,lastNum)): return memo[(idx,lastNum)] result = -int.high.div(5) if lastNum>=5: result.max=(lastNum-4)-dfs(idx,4) if lastNum>=2: result.max=(lastNum-1)-dfs(idx,1) if lastNum>=1: result.max=(lastNum-m)-dfs(idx+1,-1) memo[(idx,lastNum)]=result return result var score = dfs(0,-1) if score>0: echo "First" else: echo "Second" solve()