def main(): import sys input = sys.stdin.read().split() idx = 0 N = int(input[idx]) idx +=1 V = int(input[idx]) idx +=1 A = list(map(int, input[idx:idx+N])) max_mask = 1 << N sum_mask = [0] * max_mask for mask in range(max_mask): s = 0 for i in range(N): if mask & (1 << i): s += A[i] sum_mask[mask] = s # Generate mask_order sorted by number of set bits in descending order mask_order = [] for bit_count in range(N, -1, -1): for mask in range(max_mask): if bin(mask).count('1') == bit_count: mask_order.append(mask) memo = {} full_mask = (1 << N) -1 for mask in mask_order: current_sum = sum_mask[mask] if current_sum > V: continue # Skip invalid states if mask == full_mask: if current_sum <= V: memo[mask] = 'draw' else: continue # This state is not possible else: is_win = False can_draw = False any_move = False for i in range(N): if not (mask & (1 << i)): new_sum = current_sum + A[i] if new_sum > V: continue any_move = True next_mask = mask | (1 << i) if next_mask == full_mask: if new_sum <= V: can_draw = True else: # Check memo for the next state next_outcome = memo.get(next_mask, 'lose') if next_outcome == 'lose': is_win = True elif next_outcome == 'draw': can_draw = True # Determine the outcome for the current mask if is_win: memo[mask] = 'win' else: if can_draw: memo[mask] = 'draw' else: if any_move: memo[mask] = 'lose' else: # No valid moves, player has to choose and lose memo[mask] = 'lose' initial_outcome = memo.get(0, 'draw') if initial_outcome == 'win': print("First") elif initial_outcome == 'lose': print("Second") else: print("Draw") if __name__ == '__main__': main()