Problem:
Score : 300 points

Problem Statement

Given is a sequence of integers A_1, A_2, ..., A_N.
If its elements are pairwise distinct, print YES; otherwise, print NO.

Constraints

2 ≤ N ≤ 200000

1 ≤ A_i ≤ 10^9

All values in input are integers.

Input

Input is given from Standard Input in the following format:

N
A_1 ... A_N

Output

If the elements of the sequence are pairwise distinct, print YES; otherwise, print NO.

Sample Input 1

5
2 6 1 4 5

Sample Output 1

YES

The elements are pairwise distinct.

Sample Input 2

6
4 1 3 1 6 2

Sample Output 2

NO

The second and fourth elements are identical.

Sample Input 3

2
10000000 10000000

Sample Output 3

NO

Solution in Fortran (gfortran v4.8.4) (judge verdict: Accepted)

      MODULE qSortMod
      implicit none
      interface qSort
        module procedure :: i16qSort
        module procedure :: i4qSort
      end interface
      contains
      
      pure recursive function i16qSort( a ) result( r )
          !ref
          !https://t.doujin-constant.net/
          !post/143374686394/fortranをより使いこなしたquick-sort
          !
          !left is Bigger!
        implicit none
        integer(16),intent(in) :: a(:)
        integer(16) :: r( size(a) )
        !integer(16),allocatable :: r(:) !is OK
        
        if( size(a)>1 )then
          r = [ qSort( pack( a(:),a(:)> a(1) ) ), &
                       pack( a(:),a(:)==a(1) )  , &
                qSort( pack( a(:),a(:)< a(1) ) ) ]
        else
          r = a
        end if
      end function i16qSort
      
      pure recursive function i4qSort( a ) result( r )
        implicit none
        integer(4),intent(in) :: a(:)
        integer(4) :: r( size(a) )
        
        if( size(a)>1 )then
          r=[qSort(pack(a,a>a(1))),pack(a,a==a(1)),qSort(pack(a,a<a(1)))]
        else
          r = a
        end if
      end function i4qSort
      END MODULE qSortMod
      
      
      PROGRAM piyo
      USE qSortMod
      IMPLICIT NONE
      INTEGER(16) :: n
      integer(16),allocatable :: a(:)
      integer(16) :: i
      
      read*,n
      allocate( a(n) )
      read*,a(:)
      
      a = qSort( a )
      
      
      do i = 1,n-1
        if( a(i)==a(i+1) )then
          print*,'NO'
          STOP
        end if
      end do
      
      print*,'YES'
      
      END PROGRAM