#include<iostream>
#include<cmath>
#include<algorithm>
#include<string>
#include<map>
#include<utility>
#include<vector>

using namespace std;
typedef long long ll;


#define MOD 10000000007

ll deg(ll n){
    ll count = 0;
    while(n!= 0){
        n/=10;
        count++;
    }
    return count;
}

// int main(){
//     ll n;
//     cin >> n;
//     ll a[n];
//     ll p = 100001;
//     for(int i = 0; i < n;i++){
//       cin >> a[i];
//     }
//     ll c[p],d[p];
//     for(int i = 0;i < p;i++){
//         c[i] = 0;
//         d[i] = 0;
//     }
//     for(int i = 0;i < n;i++){
//         if(i%2 == 0)
//         c[a[i]]++;
//         else
//         d[a[i]]++;
//     }
//     pair<ll,ll> c1,c2,d1,d2;
//     for(int i = 0;i < p;i++){
//         c1 = make_pair<i,c[i]>;
//     }
       
    
// }

// int main(){
//    int n;
//    cin >> n;
//    vector<pair<int,int> > x(n);
//    for(int i = 0;i < n;i++) {
//        int a,b;
//        cin >> a >> b;
//        x[i] = make_pair(a,b);
//    }
//    sort(x.begin(),x.end());

//    bool e = false;
//    int ans = 0;
//    for(int i = 0;i < n;i++){
//        if(i == 0){
//            if(x[i].first+x[i].second-1 > x[i+1].first-x[i+1].second+1){
//                e = true;
//            }
//        }else{
//            if(x[i].first+x[i].second-1 > x[i+1].first-x[i+1].second+1 && e){
//                e = false;
//                if(x[i-1].first+x[i-1].second-1 > x[i+1].first-x[i+1].second+1){
//                    ans++;
//                    e = true;
//                }
//                ans++;
//            }
//            if(x[i].first+x[i].second-1 > x[i+1].first-x[i+1].second+1 && !e){
//                e = true;
//            }
//        }
//    }   
//    cout << n-ans << endl;


// }
int main(){
    // ll n;
    // ll k;
    // cin >> n >> k;
    // vector<ll> a(n);
    // for(int i = 0;i < n;i++){
    //     cin >> a[i];
    // }
    // sort(a.begin(),a.end());

    
    // vector<ll> mvec,pvec,zvec;
    // for(int i = 0; i< n;i++){
    //     if(a[i] < 0){
    //         mvec.push_back(a[i]);
    //     }else if(a[i] == 0){
    //         zvec.push_back(0);
    //     }else{
    //         pvec.push_back(a[i]);
    //     }
    // }
    // ll conb1 = mvec.size()*pvec.size();
    // ll conb2 = zvec.size()*mvec.size()+zvec.size()*pvec.size()+zvec.size()*(zvec.size()-1)/2; 

    // //マイナスになるとき
    // if(conb1 >= k){
    //     ll t = (k-1)/pvec.size();
    //     ll tr = (k-1)%pvec.size();
    //     cout << mvec[t]*pvec[tr] << endl;
    // //ゼロになるとき
    // }else if(conb2 >= k-conb1){
    //     cout << 0 << endl;
    
    // }else{
    //     k -= conb1+conb2;
    //     //k番目に大きい積を探索すればよい.
    //     //例えば100000からはじめる?
    //     //この発想だとここでおわおわり.

    // }
    int n;cin >> n;
    int a[n];
    for(int i = 0;i < n;i++)cin >> a[i];
    map<int,int> m;
    for(int i = 0;i < n;i++){
        m.insert(make_pair(a[i],0));
    }
    for(int i= 0;i<n;i++){
        m[a[i]]++;
    }
    bool flag = false;
    for(int i=0;i<n;i++){
        if(m[a[i]]!=1){
            flag = true;
        }
        if(flag) break;
    }
    if(flag) cout << "NO" << endl;
    else cout << "YES" << endl;
    
    

    
}

Measured memory_bytes: 10368