N = int(input()) A = map(int, input().split()) A0 = next(A) dp_min = dp_max = A0 ceil = lambda a, b: (a + b - 1) // b def div_inf(x, a, inf): if a: return ceil(x, a) if x * a < 0 else x // a else: return inf INF = 10 ** 18 for a in A: dp_min, dp_max = ( min( dp_min + a, dp_max + a, dp_min - a, dp_max - a, dp_min * a, dp_max * a, div_inf(dp_min, a, INF), div_inf(dp_max, a, INF) ), max( dp_min + a, dp_max + a, dp_min - a, dp_max - a, dp_min * a, dp_max * a, div_inf(dp_min, a, -INF), div_inf(dp_max, a, -INF) )) print(dp_max)