findWinner

One day Vasya decided to have a look at the results of Berland 1910 Football Championship’s finals. Unfortunately he didn't find the overall score of the match; however, he got hold of a profound description of the match's process. On the whole there are n lines in that description each of which described one goal. Every goal was marked with the name of the team that had scored it. Help Vasya, learn the name of the team that won the finals. It is guaranteed that the match did not end in a tie.

Input

The first line contains an integer n (1 ≤ n ≤ 100) — the number of lines in the description. Then follow n lines — for each goal the names of the teams that scored it. The names are non-empty lines consisting of uppercase Latin letters whose lengths do not exceed 10 symbols. It is guaranteed that the match did not end in a tie and the description contains no more than two different teams.

Output

Print the name of the winning team. We remind you that in football the team that scores more goals is considered the winner.

Examples

Input

1
ABC


Output

ABC


Input

5
A
ABA
ABA
A
A


Output

A

Function Signature

def findWinner (n : Nat) (teams : List String) : String

Theorem Signature

def countOccurrences (x : String) (xs : List String) : Nat :=
  xs.foldl (fun acc s => if s == x then acc + 1 else acc) 0

def uniqueTeams (teams : List String) : List String :=
  teams.foldl (fun acc s => if acc.contains s then acc else s::acc) []

def winner_prop (n : Nat) (teams : List String) (out : String) : Prop :=
  let uniq := uniqueTeams teams
  let counts := uniq.map (fun team => (team, countOccurrences team teams))
  counts.length ≤ 2 ∧ 
  counts.length > 0 ∧
  (∃ team count, counts.contains (team, count) ∧ team = out ∧
    ∀ other_team other_count, counts.contains (other_team, other_count) → 
      other_count ≤ count)
theorem winner_spec (n : Nat) (teams : List String) : winner_prop n teams (findWinner n teams)

View All Submissions

Please log in or register to submit a solution for this challenge.