#define _USE_MATH_DEFINES #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; typedef unsigned long long ull; typedef pair i_i; typedef pair i_ll; typedef pair ll_i; typedef pair d_i; typedef pair ll_ll; typedef pair d_d; struct edge { int u, v; ll w; }; ll MOD = 1000000007; ll _MOD = 1000000009; double EPS = 1e-10; int main() { int N; cin >> N; vector D(N); for (int i = 0; i < N; i++) cin >> D[i]; vector ub(1 << N, 100); for (int S = 0; S < (1 << N); S++) for (int i = 0; i < N; i++) if (S & (1 << i) && D[i] < 0) ub[S] += 100; vector dp(1 << N); dp[0] = 100; for (int S = 1; S < (1 << N); S++) for (int i = 0; i < N; i++) { if (!(S & (1 << i))) continue; int T = S - (1 << i); if (dp[T] == 0) continue; int x = min(ub[S], dp[T] + D[i]); dp[S] = max(dp[S], x); } cout << dp[(1 << N) - 1] << endl; }