#include <bits/stdc++.h>
using namespace std;
const int mxn = 100005;
int lgth[mxn];
bool lng[mxn];
set<pair<int, int> > przed;
void dod(int nr) {
  auto nxt = przed.lower_bound(make_pair(nr, nr));
  auto prv = *prev(nxt);
  int poc = nr, kon = nr;
  if (nxt->first == nr + 1) {
    kon = nxt->second;
    przed.erase(nxt);
  }
  if (prv.second == nr - 1) {
    poc = prv.first;
    przed.erase(prv);
  }
  przed.insert(make_pair(poc, kon));
}
int main() {
  przed.insert(make_pair(-2, -2));
  przed.insert(make_pair(mxn, mxn));
  int n, m, l;
  scanf("%d%d%d", &n, &m, &l);
  for (int i = 0; i < n; i++) {
    scanf("%d", &lgth[i]);
    if (lgth[i] > l) {
      lng[i] = 1;
      dod(i);
    }
  }
  while (m--) {
    int t;
    scanf("%d", &t);
    if (t == 0) {
      printf("%d\n", (int)przed.size() - 2);
    } else {
      int nr, dl;
      scanf("%d%d", &nr, &dl);
      nr--;
      if (!lng[nr]) {
        lgth[nr] += dl;
        if (lgth[nr] > l) {
          lng[nr] = 1;
          dod(nr);
        }
      }
    }
  }
}
