#yuki_505 INF=float('inf') def q(x,y): if x>=0: return x/y else: return -(abs(x)/y) n=int(raw_input()) a=map(int,raw_input().split()) dp=[[-INF,INF] for j in xrange(n)] dp[0][0]=dp[0][1]=a[0] for i in xrange(1,n): for j in xrange(2): dp[i][0]=max(dp[i][0],dp[i-1][j]+a[i]) dp[i][0]=max(dp[i][0],dp[i-1][j]-a[i]) dp[i][0]=max(dp[i][0],dp[i-1][j]*a[i]) if a[i]!=0: dp[i][0]=max(dp[i][0],q(dp[i-1][j],a[i])) dp[i][1]=min(dp[i][1],dp[i-1][j]+a[i]) dp[i][1]=min(dp[i][1],dp[i-1][j]-a[i]) dp[i][1]=min(dp[i][1],dp[i-1][j]*a[i]) if a[i]!=0: dp[i][1]=min(dp[i][1],q(dp[i-1][j],a[i])) print dp[n-1][0]