#include <bits/stdc++.h>
using namespace std;
int p[1000005];
int fnd(int x) { return p[x] = p[x] == x ? x : fnd(p[x]); }
void unn(int x, int y) { p[fnd(y)] = fnd(x); }
long long a[100005];
int chk[100005];
int main() {
  int n, m, l;
  scanf("%d%d%d", &n, &m, &l);
  for (int i = 1; i <= n; i++) p[i] = i;
  int cnt = 0;
  for (int i = 1; i <= n; i++) {
    scanf("%I64d", a + i);
    if (a[i] > l) {
      cnt++;
      chk[i] = 1;
      if (i > 1 && chk[i - 1]) {
        unn(i, i - 1);
        cnt--;
      }
    }
  }
  for (int i = 0; i < m; i++) {
    int mod;
    scanf("%d", &mod);
    if (mod) {
      int t1, t2;
      scanf("%d%d", &t1, &t2);
      a[t1] += t2;
      if (!chk[t1] && a[t1] > l) {
        cnt++;
        chk[t1] = 1;
        if (t1 > 1 && chk[t1 - 1]) {
          unn(t1, t1 - 1);
          cnt--;
        }
        if (t1 < n && chk[t1 + 1]) {
          unn(t1, t1 + 1);
          cnt--;
        }
      }
    } else {
      printf("%d\n", cnt);
    }
  }
}
