program main
      implicit none
      integer :: n, i, cnt, maxs
      character(10), allocatable :: s(:)

      read *, n
      allocate( s(n) )
      do i = 1, n
        read *, s(i)
      end do

      call quicksort1( s, 1, n )

      cnt = 0
      maxs = 1
      do i = 1, n
        if ( s(i) == s(i+1) ) then
          cnt = cnt + 1
        else
          if ( maxs <= cnt ) then
            maxs = cnt
          end if 
          cnt = 0
        end if
      end do

      cnt = 0
      do i = 1, n
        if ( maxs == 1 ) then
              print *, s(i)
        else
          if ( s(i) == s(i+1) ) then
            cnt = cnt + 1
          else
            if ( maxs == cnt ) then
              print *, s(i)
            end if 
            cnt = 0
          end if
        end if
      end do

end program main
recursive subroutine quicksort1( namec, first, last )

  implicit none
  character(10), intent(inout) :: namec(*)
  integer,intent(in)::first,last
  !
  ! Original
  ! https://gist.github.com/t-nissie/479f0f16966925fa29ea
  !
  character(100)::x,t
  integer::i,j

  x = namec((first+last)/2)
  i = first
  j = last
  do
     do while ( LGT( x, namec(i) ) )
        i=i+1
     end do
     do while ( LGT( namec(j), x ) )
        j=j-1
     end do
     if (i >= j) exit
     t = namec(i)
     namec(i) = namec(j)
     namec(j) = t
     i=i+1
     j=j-1
  end do
  if (first < i-1) call quicksort1( namec, first, i-1  )
  if (j+1 < last)  call quicksort1( namec, j+1  , last )

  return

end subroutine quicksort1
