//C++ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #if __cplusplus >= 201103L #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #endif #if __cplusplus >= 201402L #include #endif #if __cplusplus >= 201703L #include #include // #include #include #include //#include #include #include #endif #if __cplusplus > 201703L #include #include #include #include #if __cpp_impl_coroutine #include #endif #include #include #include #include #include #include #include #include #include #endif //C #ifndef _GLIBCXX_NO_ASSERT #include #endif #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #if __cplusplus >= 201103L #include #include #include #include #include #include #include #include #include #endif //#define int ll using namespace std; using ll = long long; using ld = long double; using ull = unsigned long long; using uint = unsigned int; using pii = pair; using pll = pair; using pdd = pair; #define rep1(i, n) for(ll i = 0; i < (int)(n); i++) #define rep2(i, a, b) for(ll i = (int)(a); i < (int)(b); i++) #define rep3(i, a, b, c) for(ll i = (int)(a); i < (int)(b); i+=(int)(c)) #define rrep1(i, n) for(ll i = (int)(n); i >= 0; i--) #define rrep2(i, a, b) for(ll i = (int)(b); i >= (int)(a); i--) #define REP(i) for(ll i = 0; ; i++) #define all(v) (v).begin(), (v).end() template using pq = priority_queue, greater>; template bool chmin(T &a, const T &b){ if(a > b){ a = b; return 1; } else return 0; } template bool chmax(T &a, const T &b){ if(a < b){ a = b; return 1; } else return 0; } template auto min(const T& a){ return *min_element(all(a)); } template auto max(const T& a){ return *max_element(all(a)); } template ll sum(const T& a){ return accumulate(all(a), 0LL); } template ld dsum(const T& a){ return accumulate(all(a), 0.0L); } const int MOD = 1000000007; const int MMOD = 998244353; const int MAX = 510000; const double PI = 3.14159265358979323846; const ll INF = 1LL<<60; ll gcd(ll a, ll b){ while(b){ ll c = b; b = a % b; a = c; } return a; } ll lcm(ll a, ll b){ if(!a || !b) return 0; return a * b / gcd(a, b); } ll POW(ll a, ll b){ ll ans = 1; while(b){ if(b & 1) ans *= a; a *= a; b /= 2; } return ans; } ll MODPOW(ll a, ll b){ ll ret = 1; while(b){ if(b & 1) ret = ret*a%MOD; a = a*a%MOD; b /= 2;} return ret;} /* #include #include namespace mp = boost::multiprecision; // 任意長整数型 using Bint = mp::cpp_int; //*/ /* struct Edge{ ll to; ll we; t(ll s, ll t) : to(s), we(t) {} }; using Graph = vector>; //*/ /* #include using namespace atcoder; //*/ /* ll op(ll a, ll b) { return a+b; } ll e() { return 0; } //*/ ll N; bool dfs(vector E, vector &A, vector &B, vector &C, int now){ if(A.size()+B.size()+C.size()==N){ if(A.size()==0||B.size()==0||C.size()==0) return false; else return (sum(A) == sum(B) && sum(B) == sum(C)); } bool f1, f2, f3; A.push_back(E[now]); f1 = dfs(E, A, B, C, now+1); A.pop_back(); B.push_back(E[now]); f2 = dfs(E, A, B, C, now+1); B.pop_back(); C.push_back(E[now]); f3 = dfs(E, A, B, C, now+1); C.pop_back(); return (f1||f2||f3); } signed main(){ ios::sync_with_stdio(false); std::cin.tie(nullptr); cin >> N; vector E(N); rep1(i, N) cin >> E[i]; vector A, B, C; bool flag = dfs(E, A, B, C, 0); cout << (flag?"Yes":"No") << endl; }