#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
long long pos[333333];
void cmp(const void* a, const void* b) {
long long arg1 = *(long long*)a;
long long arg2 = *(long long*)b;
if (arg1 < arg2) {
return -1ll;
}
else if (arg1 > arg2) {
return 1ll;
}
return 0ll;
}
int main() {
long long n, m, k;
scanf("%lld%lld%lld", &n, &m, &k);
for (long long i = 0; i < n; i++) {
scanf("%lld", &pos[i]);
}
long long op,x;
long long st=0,la=n-1;
long long d = 0;
qsort(pos, n, sizeof(long long), cmp);
for (long long j = 0; j < m; j++) {
scanf("%lld", &op);
if (op == 3) {
printf("%lld\n", la - st);
continue;
}
if (op==1) {
scanf("%lld", &x);
d += x;
while (pos[la] + d > k && st <= la) {
la--;
}
}
else if (op == 2) {
scanf("%lld", &x);
d -= x;
while (pos[st] + d < -k && st <= la) {
st++;
}
}
}
return 0;
}