      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
      