#include <bits/stdc++.h>
using namespace std;
template <class T>
void cmax(T& _, T __) {
  if (_ < __) _ = __;
}
template <class T>
void cmin(T& _, T __) {
  if (_ > __) _ = __;
}
namespace FastIO {
char ibf[1 << 20], d[42], *ip = ibf + 1, *t = ibf + 1, obf[1 << 17], *op = obf;
bool read(char* s) {
  char* tmp = s;
  while (t != ibf) {
    while (ip != t && *ip <= ' ') ip++;
    if (ip != t)
      break;
    else
      t = ibf + fread(ibf, 1, 1 << 20, stdin), ip = ibf;
  }
  while (t != ibf) {
    for (; ip<t&& * ip> ' '; ip++) *s++ = *ip;
    if (ip != t)
      break;
    else
      t = ibf + fread(ibf, 1, 1 << 20, stdin), ip = ibf;
  }
  *s = '\0';
  return s != tmp;
}
template <class T>
bool read(T& x) {
  if (!read(d)) {
    return false;
  }
  x = 0;
  for (char* p = d + (*d == '-'); *p;) x = x * 10 + ((*p++) ^ 48);
  if (*d == '-') {
    x = -x;
  }
  return true;
}
inline void flush() {
  if (op != obf) {
    fwrite(obf, 1, op - obf, stdout);
    op = obf;
  }
}
template <class T>
void print(T x) {
  if (x < 0) {
    *op++ = '-';
    x = -x;
  }
  if (x == 0) {
    *op++ = '0';
    return;
  }
  char* p = d;
  for (; x; x /= 10) *p++ = x % 10 + '0';
  while (p != d) {
    *op++ = *--p;
  }
  if ((op - obf) >= (1 << 17) - 70) {
    flush();
  }
}
inline void print(char* s) {
  while (*s != '\0') {
    *op++ = *s++;
    if ((op - obf) >= (1 << 17) - 70) {
      flush();
    }
  };
}
inline void print(char ch) {
  *op++ = ch;
  if ((op - obf) >= (1 << 17) - 70) {
    flush();
  }
}
inline void print(const char* s) {
  for (int i = 0; s[i]; i++) {
    if ((op - obf) >= (1 << 17) - 70) {
      flush();
    }
    *op++ = s[i];
  }
}
template <class T, class... Args>
inline bool read(T& x, Args&... r) {
  return read(x) && read(r...);
}
template <class T, class... Args>
inline void print(T x, Args... r) {
  print(x), print(r...);
}
template <class... Args>
inline void println(Args... r) {
  print(r...);
  print('\n');
}
}  // namespace FastIO
using namespace FastIO;
const int maxn = 1e5 + 10, INF = 0x3f3f3f3f;
const long long LINF = (long long)INF << 32 | INF, mod = 1e9 + 7;
int main() {
  int n, q, l, r, x;
  long long ans = 0;
  read(n);
  vector<long long> a(n + 1, 0);
  for (int i = 1; i <= (n); ++i) read(a[i]);
  for (int i = n; i > 1; i--) a[i] -= a[i - 1], ans += max(0LL, a[i]);
  println((long long)ceil(0.5 * (ans + a[1])));
  read(q);
  function<void(int, int)> change = [&](int p, int delta) {
    if (p > n) return;
    if (p == 1) return a[1] += delta, void();
    ans -= max(0LL, a[p]);
    ans += max(0LL, a[p] += delta);
  };
  while (q--) {
    read(l, r, x);
    change(l, x);
    change(r + 1, -x);
    println((long long)ceil(0.5 * (ans + a[1])));
  }
  flush();
  return 0;
}
