#include <bits/stdc++.h>
#pragma GCC optimize("Ofast")
using namespace std;
using std::cout;
using std::cin;
using std::endl;
using ll=long long;
using ld=long double;
ll I=1167167167167167167;
ll Q=1e9+7;
#define rep(i,a) for (ll i=0;i<a;i++)
template<class T> using _pq = priority_queue<T, vector<T>, greater<T>>;
template<class T> ll LB(vector<T> &v,T a){return lower_bound(v.begin(),v.end(),a)-v.begin();}
template<class T> ll UB(vector<T> &v,T a){return upper_bound(v.begin(),v.end(),a)-v.begin();}
template<class T> bool chmin(T &a,const T &b){if(a>b){a=b;return 1;}else return 0;}
template<class T> bool chmax(T &a,const T &b){if(a<b){a=b;return 1;}else return 0;}
template<class T> void So(vector<T> &v) {sort(v.begin(),v.end());}
template<class T> void Sore(vector<T> &v) {sort(v.begin(),v.end(),[](T x,T y){return x>y;});}
template<class T> void print_tate(vector<T> &v) {rep(i,v.size()) cout<<v[i]<<"\n";}
void yneos(bool a){if(a) cout<<"Yes"<<"\n"; else cout<<"No"<<"\n";}

//おちこんだりもしたけれど、私はげんきです。
int main() {
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	int N;
	cin>>N;
	vector<int> p(N),q(N);
	iota(q.begin(),q.end(),1);
	rep(i,N) cin>>p[i];
	So(p);
	yneos(p==q);
}

#include<iostream>
#include<string>
#include<algorithm>
#include<cmath>
#include<utility>
#include<bitset>
#include<vector>
#include<iomanip>
#include<map>
#include<set>
#include<queue>
using namespace std;
 
#define ll                  long long
#define ssort(v)            sort(v.begin(), v.end())
#define ssortr(v)           sort(v.begin(),v.end(),greater<int>())
#define uniquee(x)          x.erase(unique(x.begin(), x.end()),x.end())
#define sz(s)               s.size()
#define lg(s)               s.length()

int main()
{
	ios::sync_with_stdio(false), cin.tie(0);
	int n; cin>>n;
	vector<int>A(n);
	map<int,int>mp;
	for(int i=0;i<n;i++){
		cin>>A[i];
		mp[A[i]]++;
	}
	for(auto it=mp.begin();it!=mp.end();++it){
		if(it->second!=1){
			cout<<"No"<<endl;
			return 0;
		}
	}
	cout<<"Yes"<<endl;
}