#include <bits/stdc++.h>
using namespace std;
const int N = 3e5 + 50;
int n, m, x, y, mx[N << 3];
int ld[N << 3], ru[N << 3], lud[N << 3], rdu[N << 3];
long long vl[N << 3], vr[N << 3], tag[N << 3], z;
inline int max(int u, int v) { return u > v ? u : v; }
void update(int k, int l, int r) {
  int mid = l + r >> 1;
  vl[k] = vl[k << 1];
  vr[k] = vr[k << 1 | 1];
  ld[k] = ld[k << 1];
  if (ld[k << 1] == mid - l + 1 && vr[k << 1] > vl[k << 1 | 1])
    ld[k] += ld[k << 1 | 1];
  ru[k] = ru[k << 1 | 1];
  if (ru[k << 1 | 1] == r - mid && vr[k << 1] < vl[k << 1 | 1])
    ru[k] += ru[k << 1];
  lud[k] = lud[k << 1];
  if (lud[k << 1] == mid - l + 1 && vr[k << 1] > vl[k << 1 | 1])
    lud[k] += ld[k << 1 | 1];
  if (ru[k << 1] == mid - l + 1 && vr[k << 1] < vl[k << 1 | 1])
    lud[k] = max(lud[k], ru[k << 1] + lud[k << 1 | 1]);
  rdu[k] = rdu[k << 1 | 1];
  if (rdu[k << 1 | 1] == r - mid && vr[k << 1] < vl[k << 1 | 1])
    rdu[k] += ru[k << 1];
  if (ld[k << 1 | 1] == r - mid && vr[k << 1] > vl[k << 1 | 1])
    rdu[k] = max(rdu[k], ld[k << 1 | 1] + rdu[k << 1]);
  mx[k] = max(mx[k << 1], mx[k << 1 | 1]);
  mx[k] = max(mx[k], max(ld[k], ru[k]));
  mx[k] = max(mx[k], max(lud[k], rdu[k]));
  if (vr[k << 1] < vl[k << 1 | 1])
    mx[k] = max(mx[k], ru[k << 1] + lud[k << 1 | 1]);
  if (vr[k << 1] > vl[k << 1 | 1])
    mx[k] = max(mx[k], rdu[k << 1] + ld[k << 1 | 1]);
}
void build(int k, int l, int r) {
  if (l == r) {
    scanf("%d", &x);
    vl[k] = vr[k] = x;
    mx[k] = ld[k] = lud[k] = ru[k] = rdu[k] = 1;
    return;
  }
  int mid = l + r >> 1;
  build(k << 1, l, mid);
  build(k << 1 | 1, mid + 1, r);
  update(k, l, r);
}
void down(int k, int l, int r) {
  if (!tag[k]) return;
  vl[k << 1] += tag[k];
  vl[k << 1 | 1] += tag[k];
  vr[k << 1] += tag[k];
  vr[k << 1 | 1] += tag[k];
  tag[k << 1] += tag[k];
  tag[k << 1 | 1] += tag[k];
  tag[k] = 0;
}
void add(int k, int l, int r, int x, int y, long long val) {
  if (l > y || r < x) return;
  if (l >= x && r <= y) {
    vl[k] += val;
    vr[k] += val;
    tag[k] += val;
    return;
  }
  down(k, l, r);
  int mid = l + r >> 1;
  add(k << 1, l, mid, x, y, val);
  add(k << 1 | 1, mid + 1, r, x, y, val);
  update(k, l, r);
}
int main() {
  scanf("%d", &n);
  build(1, 1, n);
  scanf("%d", &m);
  for (int i = 1; i <= m; i++) {
    scanf("%d %d %lld", &x, &y, &z);
    add(1, 1, n, x, y, z);
    printf("%d\n", mx[1]);
  }
}
