#include using namespace std; const int INF = 1000000000; int main(){ int N; cin >> N; vector A(N); for (int i = 0; i < N; i++){ cin >> A[i]; } vector dp(N + 1, 0); auto dfs = [&](auto dfs, int L, int R) -> void { if (L == R){ return; } int p = L; int mx = A[L]; for (int i = L + 1; i < R; i++){ mx = max(mx, A[i]); if (A[i] < A[p]){ p = i; } } dp[R] = max(dp[R], dp[L] + (long long) abs(mx) * (R - L)); dfs(dfs, L, p); dp[p + 1] = max(dp[p + 1], dp[p] + abs(A[p])); dfs(dfs, p + 1, R); }; dfs(dfs, 0, N); cout << dp[N] << endl; }