N = int( input() ) A = list( map( int, input().split() ) ) ans = - int( 1e30 ) def dfs( x, v, zero ): if x == N: global ans ans = max( ans, v ) return if zero: dfs( x + 1, 0, zero ) zero |= A[ x ] == 0 best = max( v + abs( A[ x ] ), v * A[ x ] ) if A[ x ] != 0: best = max( best, v // A[ x ] ) dfs( x + 1, best, zero ) best = min( v - abs( A[ x ] ), v * A[ x ] ) if A[ x ] != 0: best = min( best, v // A[ x ] ) dfs( x + 1, best, zero ) dfs( 1, A[ 0 ], A[ 0 ] == 0 ) print( ans )