#include <iostream>
#include <cstdio>
#include <vector>
#include <algorithm>
#include <complex>
#include <cstring>
#include <cstdlib>
#include <string>
#include <cmath>
#include <queue>
#include <set>
using namespace std;

#define REP(i,n) for(int i=0;i<(int)n;++i)
#define FOR(i,c) for(__typeof((c).begin())i=(c).begin();i!=(c).end();++i)
#define ALL(c) (c).begin(), (c).end()
const int INF = 1<<29;

vector<int> v;
int n;
int now;

bool solve(vector<bool> used, vector<bool> filled, int now);
  
bool select(int left, int vol, vector<bool> used, vector<bool> filled) {
  // printf("select ");
  // cout << left << ", " << vol << ", (";
  // FOR(it, used) cout << *it;
  // cout << "), (";
  // FOR(it, filled) cout << *it;
  // cout << ")" << endl;
//  if (vol < 0) return false;
  if (vol == 0) {
    if (find(ALL(used), 0)!=used.end()) {
      int p = 0;
      REP(i,n) if (filled[i]) { p = i;break;}
      return solve(used, filled, p);
    }
    else
      return true;
  }
  if (left >= n) return false;
  if (v[n-1] > vol) return false;
  
  for (int i=left; i<n; ++i) {
    if (!used[i]&&vol-v[i]>=0) {
      filled[i] = 1;
      used[i] = 1;
      if (select(i+1, vol-v[i], used, filled))
        return true;
      filled[i] = 0;
      used[i] = 0;
    }
  }
}

bool solve(vector<bool> used, vector<bool> filled, int left2) {
  // printf("solve(");
  // FOR(it, used) cout << *it;
  // cout << "), (";
  // FOR(it, filled) cout << *it;
  // cout << "), " << left2 << endl; 
  for (int now = left2; now < n; ++now) {
    if (!used[now]) break;
    if (!filled[now]) continue;
    int left = now + 1;
    int vol = v[now];
    vector<bool> used2 = used;
    vector<bool> filled2 = filled;
    filled2[now] = 0;
    for (int i=now+1; i<n; ++i) {
      if (filled2[i]) break;
      if (!used2[i]) {
        vol -= v[i];
        used2[i] = 1;
        filled2[i] = 1;
        left = i+1;
        break;
      }
    }
    if (select(left, vol, used2, filled2))
      return true;
  }
  return false;
}

int main() {
  while(cin>>n,n) {
    v.resize(n);
    REP(i,n)
      cin >> v[i];
    if (n==1) {
      cout << "YES" << endl;
      continue;
    }
    sort(ALL(v), greater<int>());
    // FOR(it,v)
    //   cout << *it << " ";
    // cout << endl;
    vector<bool> used(n);
    vector<bool> filled(n);
    used[0] = 1;
    filled[0] = 1;
    if (solve(used, filled, 0))
      cout << "YES" << endl;
    else
      cout << "NO" << endl;
  }
}