#include <bits/stdc++.h>
using namespace std;
inline void upd(int64_t& x, int64_t y) {
  if (y > x) x = y;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(nullptr);
  int n;
  cin >> n;
  vector<int> v(n + 1);
  for (int i = 1; i <= n; i++) cin >> v[i];
  if (n == 1) {
    cout << abs(v[1]) << '\n';
    return 0;
  }
  vector<vector<vector<vector<int64_t>>>> dp(
      n + 1, vector<vector<vector<int64_t>>>(
                 3, vector<vector<int64_t>>(2, vector<int64_t>(2, -1e18))));
  dp[1][(n + 1) % 3][1][0] = -v[1];
  dp[1][(n + 0) % 3][1][1] = +v[1];
  for (int i = 1; i < n; i++)
    for (int r = 0; r < 3; r++) {
      upd(dp[i + 1][(r + 1) % 3][0][0], dp[i][r][0][0] - v[i + 1]);
      upd(dp[i + 1][(r + 0) % 3][0][1], dp[i][r][0][0] + v[i + 1]);
      upd(dp[i + 1][(r + 1) % 3][0][0], dp[i][r][0][1] - v[i + 1]);
      upd(dp[i + 1][(r + 0) % 3][0][1], dp[i][r][0][1] + v[i + 1]);
      upd(dp[i + 1][(r + 1) % 3][0][0], dp[i][r][1][0] - v[i + 1]);
      upd(dp[i + 1][(r + 0) % 3][1][1], dp[i][r][1][0] + v[i + 1]);
      upd(dp[i + 1][(r + 1) % 3][1][0], dp[i][r][1][1] - v[i + 1]);
      upd(dp[i + 1][(r + 0) % 3][0][1], dp[i][r][1][1] + v[i + 1]);
    }
  cout << max(dp[n][1][0][0], dp[n][1][0][1]) << '\n';
  return 0;
}
