def solution(arr):
answer = -1
n = len(arr)
max_dp = [[0 for _ in range(n)] for _ in range(n)]
min_dp = [[0 for _ in range(n)] for _ in range(n)]
for i in range(n):
if i%2==0:
arr[i]=int(arr[i])
min_dp[i][i]=max_dp[i][i]=arr[i]
for x in range(3,n+1,2):
for left in range(0,n,2):
right = x + left -1
max_, min_ = [], []
if right>=n:
break
for op_idx in range(left+1, right,2):
if arr[op_idx]=="+":
max_.append(max_dp[left][op_idx-1]+max_dp[op_idx+1][right])
min_.append(min_dp[left][op_idx-1]+min_dp[op_idx+1][right])
elif arr[op_idx]=="-":
max_.append(max_dp[left][op_idx-1]-min_dp[op_idx+1][right])
min_.append(min_dp[left][op_idx-1]-max_dp[op_idx+1][right])
max_dp[left][right] = max(max_)
min_dp[left][right] = min(min_)
answer = (max_dp[0][-1])
return answer