#include<iostream>
#include<algorithm>
using namespace std;

int t[50],u[50],n;
bool dp[50][101];

bool dfs(int x,int cnt){
  if(cnt<0)return false;
  if(!dp[x][cnt])return false;
  
  if(x==n-1){
    /*
    for(int i=0;i<n;i++)cout<<u[i]<<' ';
    cout<<"a"<<cnt<<endl;
    */
    return (u[x]==0);
  }
  if(u[x]!=0&&u[x]!=t[x])return false;
  
  for(int i=x+1;i<n;i++){
    if(u[i]-t[x]<0)continue;
    u[i]-=t[x];
    if(dfs(x+1,cnt-u[x]))return true;
    u[i]+=t[x];
  }

  return false;
}

void make_table(){
  dp[n-1][0]=dp[n-1][t[n-1]]=true;
  for(int i=n-2;i>=0;i--){
    for(int j=0;j<101;j++){
      dp[i][j]|=dp[i+1][j];
      if(j-t[i]>=0)dp[i][j]|=dp[i+1][j-t[i]];
    }
  }
  /*
  for(int i=0;i<n;i++)cout<<t[i]<<' ';cout<<endl;
  for(int i=0;i<10;i++){
    for(int j=0;j<30;j++){
      cout<<dp[i][j]<<' ';
    }
    cout<<endl;
  }
  */
}

int main(){
  while(cin>>n&&n){
    for(int i=0;i<n;i++)cin>>t[i];
    sort(t,t+n);
    for(int i=0;i<n;i++){
      u[i]=t[i];
      for(int j=0;j<101;j++)dp[i][j]=false;
    }
    u[0]=0;
    make_table();
    cout<<(dfs(0,t[n-1]-t[0])?"YES":"NO")<<endl; 
  }
  return 0; 
}