#include #include #include #include #include #include using namespace std; using ll = long long; const ll INF = 1e9; int main() { int N; cin >> N; int a[N]; for (int i = 0; i < N; i++) cin >> a[i]; vector dpmin(N, INF), dpmax(N, -INF); dpmin[0] = a[0]; dpmax[0] = a[0]; for (int i = 1; i < N; i++) { dpmax[i] = max(dpmax[i], dpmax[i - 1] + a[i]); dpmax[i] = max(dpmax[i], dpmin[i - 1] + a[i]); dpmin[i] = min(dpmin[i], dpmin[i - 1] + a[i]); dpmin[i] = min(dpmin[i], dpmax[i - 1] + a[i]); dpmax[i] = max(dpmax[i], dpmax[i - 1] - a[i]); dpmax[i] = max(dpmax[i], dpmin[i - 1] - a[i]); dpmin[i] = min(dpmin[i], dpmin[i - 1] - a[i]); dpmin[i] = min(dpmin[i], dpmax[i - 1] - a[i]); dpmax[i] = max(dpmax[i], dpmax[i - 1] * a[i]); dpmax[i] = max(dpmax[i], dpmin[i - 1] * a[i]); dpmin[i] = min(dpmin[i], dpmin[i - 1] * a[i]); dpmin[i] = min(dpmin[i], dpmax[i - 1] * a[i]); if (a[i] == 0) continue; dpmax[i] = max(dpmax[i], dpmax[i - 1] / a[i]); dpmax[i] = max(dpmax[i], dpmin[i - 1] / a[i]); dpmin[i] = min(dpmin[i], dpmin[i - 1] / a[i]); dpmin[i] = min(dpmin[i], dpmax[i - 1] / a[i]); } cout << dpmax[N-1] << endl; return 0; }