def main(): import sys input = sys.stdin.read().split() idx = 0 N = int(input[idx]) idx += 1 D = list(map(int, input[idx:idx + N])) bad = [] good = [] for d in D: if d < 0: bad.append(-d) else: good.append(d) B = len(bad) G = len(good) # DP table: mask_bad is for defeated bad monsters, mask_good for used good monsters dp = [[-1 for _ in range(1 << G)] for _ in range(1 << B)] dp[0][0] = 100 # initial state for mask_bad in range(1 << B): for mask_good in range(1 << G): current_hp = dp[mask_bad][mask_good] if current_hp <= 0: continue # Current number of defeated bad monsters k = bin(mask_bad).count('1') max_hp_current = 100 * (k + 1) # Action A: use a good monster for i in range(G): if not (mask_good & (1 << i)): heal = good[i] new_hp = min(current_hp + heal, max_hp_current) new_mask_good = mask_good | (1 << i) if new_hp > dp[mask_bad][new_mask_good]: dp[mask_bad][new_mask_good] = new_hp # Action B: defeat a bad monster for j in range(B): if not (mask_bad & (1 << j)): damage = bad[j] new_hp = current_hp - damage if new_hp > 0: new_mask_bad = mask_bad | (1 << j) if new_hp > dp[new_mask_bad][mask_good]: dp[new_mask_bad][mask_good] = new_hp max_final = 0 full_bad = (1 << B) - 1 max_hp_final = 100 * (B + 1) for mask_good in range(1 << G): current_hp = dp[full_bad][mask_good] if current_hp <= 0: continue # Calculate remaining good monsters remaining_heal = sum(good[i] for i in range(G) if not (mask_good & (1 << i))) final_hp = current_hp + remaining_heal final_hp = min(final_hp, max_hp_final) if final_hp > max_final: max_final = final_hp print(max_final if max_final > 0 else 0) if __name__ == '__main__': main()