#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
#define REP(i,b,n) for(int i=b;i<n;i++)
#define rep(i,n)   REP(i,0,n)
#define ALL(C)     (C).begin(),(C).end()

int dp[100][101];

bool calc(vector<int> in){
  rep(i,100)rep(j,101)dp[i][j]=0;
  //  dp[0][0]=1;
  dp[0][in[0]]=1;
  REP(i,1,in.size()){
    rep(j,101){
      dp[i][j]=dp[i-1][j];
      if (j-in[i]<0)continue;
      dp[i][j]+=dp[i-1][j-in[i]];
    }
  }
  
  int cannot=0;
  rep(i,in.size()){
    if (dp[i][in[i]]==0)cannot++;
  }
  if (cannot >0)return false;
}


bool solve(int n,int now,int *inp,int *vol){
  if ( now== n){
    rep(i,n){
      if ( vol[i]==0 || vol[i] == inp[i])continue;
      else return false;
    }
    return true;
  }

  rep(i,now){
    if ( vol[i]-inp[now] <0)continue;
    vol[i]-=inp[now];
    vol[now]=inp[now];
    if ( solve(n,now+1,inp,vol))return true;
    vol[now]=0;
    vol[i]+=inp[now];
  }
  
  
  return false;
}

main(){
  int n;
  while(cin>>n && n){
    int in[n];
    int vol[n];
    vector<int> a;
    rep(i,n)cin>>in[i],vol[i]=0,a.push_back(in[i]);
    sort(in,in+n,greater<int>());
    sort(ALL(a));
    vol[0]=in[0];
    if (calc(a) &&  solve(n,1,in,vol) == true)puts("YES");
    else puts("NO");
    
  }
  return false;
}