#include using namespace std; typedef long long ll; const ll INF = 10000000000000000; ll dp[16][2]; int main() { cin.tie(0); ios::sync_with_stdio(false); int n; cin >> n; vector a(n); for (int i = 0; i < n; i++) cin >> a[i]; dp[0][0] = a[0]; dp[0][1] = a[0]; for (int i = 1; i < n; i++) { dp[i][0] = -INF; dp[i][1] = INF; ll tmp; tmp = dp[i - 1][0] * a[i]; dp[i][0] = max(dp[i][0], tmp); dp[i][1] = min(dp[i][1], tmp); tmp = dp[i - 1][1] * a[i]; dp[i][0] = max(dp[i][0], tmp); dp[i][1] = min(dp[i][1], tmp); tmp = dp[i - 1][0] + a[i]; dp[i][0] = max(dp[i][0], tmp); dp[i][1] = min(dp[i][1], tmp); tmp = dp[i - 1][1] + a[i]; dp[i][0] = max(dp[i][0], tmp); dp[i][1] = min(dp[i][1], tmp); tmp = dp[i - 1][0] - a[i]; dp[i][0] = max(dp[i][0], tmp); dp[i][1] = min(dp[i][1], tmp); tmp = dp[i - 1][1] - a[i]; dp[i][0] = max(dp[i][0], tmp); dp[i][1] = min(dp[i][1], tmp); if (a[i] == 0) continue; tmp = dp[i - 1][0] / a[i]; dp[i][0] = max(dp[i][0], tmp); dp[i][1] = min(dp[i][1], tmp); tmp = dp[i - 1][1] / a[i]; dp[i][0] = max(dp[i][0], tmp); dp[i][1] = min(dp[i][1], tmp); } cout << dp[n - 1][0] << endl; return 0; }