 /*                    (
                     (  ) (
                      )    )
         |||||||     (  ( (
        ( O   O )        )
 ____oOO___(_)___OOo____(
(_______________________)
           JOINT           ░█─░█ ░█▀▀▀ ▀█▀ ░█▀▀▀█ ░█▀▀▀ ░█▄─░█ ░█▀▀█ ░█▀▀▀ ░█▀▀█ ░█▀▀█ █ ░█▀▀▀█ 　 ░█▀▀█ ░█▀▀▀█ ░█▀▀▄ ░█▀▀▀
                           ░█▀▀█ ░█▀▀▀ ░█─ ─▀▀▀▄▄ ░█▀▀▀ ░█░█░█ ░█▀▀▄ ░█▀▀▀ ░█▄▄▀ ░█─▄▄ ─ ─▀▀▀▄▄ 　 ░█─── ░█──░█ ░█─░█ ░█▀▀▀
                           ░█─░█ ░█▄▄▄ ▄█▄ ░█▄▄▄█ ░█▄▄▄ ░█──▀█ ░█▄▄█ ░█▄▄▄ ░█─░█ ░█▄▄█ ─ ░█▄▄▄█ 　 ░█▄▄█ ░█▄▄▄█ ░█▄▄▀ ░█▄▄▄*/

#include<bits/stdc++.h>
using namespace std;

 // Ordered Set
/*#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;
typedef tree<int, null_type,less<int>, rb_tree_tag,tree_order_statistics_node_update> ordered_set;
#define os_find(k) find_by_order(k)
#define os_order(k) order_of_key(k)*/


typedef long long int ll;
typedef unsigned long long int ull;
typedef long double ld;
typedef vector<int> vi;
#define loop(i,a,b) for(int i=a;i<b;i++)
#define loop1(i,a,b) for(int i=a;i<=b;i++)
#define rloop(i,a,b) for(int i=a;i>b;i--)
#define rloop1(i,a,b) for(int i=a;i>=b;i--)
#define all(a) a.begin(),a.end()
#define pb push_back
#define mp make_pair
#define pii pair<int,int>
#define int long long
#define ff first
#define ss second
#define ncr(n,r) fact[n]*modInv(fact[r])*modInv(fact[n-r])

#define MOD 1000000007
#define modInv(a) binExp(a,mod-2)
#define fast ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
#define test int t;cin>>t;while(t--)
//#define a^b=a+b-2*(a&b)

//POWER FUNCTION FOR LARGE NO.
//ll M=1000000007LL,fact[100010];

ll power(ll a, ll b, ll mod){
	ll x = 1LL, y = a;
	while (b > 0LL){
		if (b%2LL){
			x = (x*y);
			if(x>mod) x%=mod;
		}
		y = (y*y);
		if(y>mod) y%=mod;
		b /= 2LL;
	}
	return x;
}
/*
EULER'S FUNCTION FOR TAKING COMBINATION OF LARGE NO.
ll mod_inv(ll n, ll mod){
	return power(n, mod-2LL, mod);
}

ll nCr(ll n, ll k, ll mod){
	return (fact[n]* ((mod_inv(fact[k],mod)*mod_inv(fact[n-k],mod))%mod) )%mod;
}
 fact[0]=1LL;
    for(ll i=1LL;i<=100005LL;i++)
    {
        fact[i]=(fact[i-1]*i)%M;

    }*/

//pass by value increases the time complexity if you continuosly pass array or string in function it will give time complexity
//___________________(⌐⊙_⊙)__________<CHAL GURU HOJA SHURU >__________(⊙_⊙⌐)______________________________________________

signed main()
{
   int arr[4],s=0,f=0,s1=0;

   loop(i,0,4){cin>>arr[i];s+=arr[i];}
   loop(i,1,pow(2,4)-1){
       //cout<<i<<" ";
       s1=0;
     loop(j,0,4){
     if((1<<j)&i)s1+=arr[j];
     }
     if(s1==s-s1)f=1;
   }
   if(f)cout<<"Yes";
   else cout<<"No";

}

#include <bits/stdc++.h>
using namespace std;
 
	
int main() {
	
	ios_base::sync_with_stdio(0);cin.tie(0);
	
	int num; cin>>num;
	
	int ans=0;
	
	priority_queue <int> pq;
	
	for (int i=0; i<num; i++) {
		int temp; cin>>temp;
		pq.push(temp);
		
	}
	
	for (int i=num; i!=0; i--) {
		if (pq.top()!=i) {
			cout<<"No";
			break;
		}
		
		else {
			pq.pop();
			ans+=1;
		}
	}
		
		if (ans==num) cout<<"Yes";
		
	
	
	
 
}
