#include using namespace std; pair dp[1 << 17]; int main() { int N, D[20]; cin >> N; for (int i = 0; i < N; i++) { cin >> D[i]; } dp[0] = {100, 100}; for (int bit = 1; bit < 1 << N; bit++) { for (int i = 0; i < N; i++) { if (bit & 1 << i) { int mask = bit ^ (1 << i); if (dp[mask].first > 0) { if (D[i] > 0) { dp[bit].second = dp[mask].second; dp[bit].first = max(dp[bit].first, min(dp[bit].second, dp[mask].first + D[i])); } else { dp[bit].second = dp[mask].second + 100; dp[bit].first = max(dp[bit].first, dp[mask].first + D[i]); } } } } } cout << max(0, dp[(1 << N) - 1].first) << endl; }