#include #include #define chmin(x,y) (x) = min((x),(y)) #define chmax(x,y) (x) = max((x),(y)) using namespace std; using namespace atcoder; using ll = long long; const ll mod = 998244353; using mint = modint998244353; using Graph = vector>; const vector dx = {1,0,-1,0}, dy = {0,1,0,-1}; int main(){ // input int N; cin >> N; vector A(N); for(int i = 0; i < N; i++) cin >> A[i]; if(N == 1){ cout << -A[0] << endl; return 0; } // solve const ll INF = 1LL<<61; vector> dp(N+1,vector(3,-INF)); dp[0][0] = 0; for(int i = 0; i < N; i++){ if(dp[i][0] > -INF){ chmax(dp[i+1][0],dp[i][0]); chmax(dp[i+1][1],dp[i][0] - A[i]); } if(dp[i][1] > -INF){ chmax(dp[i+1][1],dp[i][1]); chmax(dp[i+1][2],dp[i][1] + A[i]); } if(dp[i][2] > -INF){ chmax(dp[i+1][2],dp[i][2]); chmax(dp[i+1][1],dp[i][2] - A[i]); } } // output cout << max(dp[N][2],dp[N][1]) << endl; }