#include<cstdio>
#include<algorithm>

#define rep(i,n) for(int i=0;i<(n);i++)

using namespace std;

bool dfs(int i);

int n,a[50];

bool vis[50],fil[50];

bool dfs2(int i,int j,int rem){ // partition
	if(rem==0) return dfs(i+1);
	if(j==n) return false;

	if(!vis[j] && a[j]<=rem){
		vis[j]=fil[j]=true;
		if(dfs2(i,j+1,rem-a[j])) return true;
		vis[j]=fil[j]=false;
	}
	return dfs2(i,j+1,rem);
}

bool dfs(int i){
	if(i==n) return true;

	if(!vis[i]) return false;

	if(dfs(i+1)) return true;
	if(fil[i]){
		fil[i]=false;
		if(dfs2(i,i+1,a[i])) return true;
		fil[i]=true;
	}
	return false;
}

int main(){
	for(;scanf("%d",&n),n;){
		rep(i,n){
			scanf("%d",a+i);
			vis[i]=fil[i]=false;
		}
		sort(a,a+n,greater<int>());
		vis[0]=fil[0]=true;
		puts(dfs(0)?"YES":"NO");
	}

	return 0;
}