integer::N,i,start=10**8,kankaku
  integer,allocatable::x(:)
  integer::zahyou(0:10**8)
  data zahyou/100000001*0/
  read *, N
  allocate(x(N))
  read *, x

  do i=1,N
     if(zahyou(x(i)).eq.1) then
        print '(a)', "NO"
        return
     end if
     zahyou(x(i)) = 1
     start = MIN(start, x(i))
  end do

  do i=start+1,10**8
     if(zahyou(i).eq.1) then
        kankaku = i - start
        exit
     end if
  end do

  do i=start, start+(N-1)*kankaku, kankaku
     if(zahyou(x(i)).ne.1) then
        print '(a)', "NO"
        return
     end if
  end do

  print '(a)', "YES"
end program