#include <bits/stdc++.h>
using namespace std;
#define int long long
#define ls u << 1
#define rs u << 1 | 1
const int maxn = 3e5 + 5;
void read(int &a){
int s = 0, w = 1;
char ch = getchar();
while(ch < '0' || '9' < ch){
if(ch == '-') {
w = -1;
}
ch = getchar();
}
while('0' <= ch && ch <= '9'){
s = s * 10 + ch - '0';
ch = getchar();
}
a = s*w;
}
struct edge {
int l, r;
int sum, add;
} t[maxn << 2];
int w[maxn];
inline void push_up(int u) {
t[u].sum = t[ls].sum + t[rs].sum;
}
inline void push_down(int u) {
if (t[u].add) {
t[ls].add = t[ls].add + t[u].add;
t[rs].add = t[rs].add + t[u].add;
t[ls].sum = t[ls].sum + (t[ls].r - t[ls].l + 1) * t[u].add;
t[rs].sum = t[rs].sum + (t[rs].r - t[rs].l + 1) * t[u].add;
t[u].add = 0;
}
}
inline void build(int u, int l, int r) {
t[u].l = l;
t[u].r = r;
if (l == r) {
t[u].sum = w[l];
return;
}
int mid = (l + r) >> 1;
build(ls, l, mid);
build(rs, mid + 1, r);
push_up(u);
}
inline int query(int u, int l, int r) {
if (t[u].l >= l && t[u].r <= r) {
return t[u].sum;
}
push_down(u);
int mid = (t[u].l + t[u].r) >> 1;
int s = 0;
if (l <= mid) {
s = query(ls, l, r);
}
if (r > mid) {
s += query(rs, l, r);
}
return s;
}
inline void modify(int u, int l, int r, int val) {
if (t[u].l >= l && t[u].r <= r) {
t[u].sum += (t[u].r - t[u].l + 1) * val;
t[u].add = t[u].add + val;
return;
} else {
push_down(u);
int mid = (t[u].l + t[u].r) >> 1;
if (l <= mid) {
modify(ls, l, r, val);
}
if (r > mid) {
modify(rs, l, r, val);
}
push_up(u);
}
}
inline int check(int u, int val, int c) {
int mid = (t[u].l + t[u].r) >> 1;
int s = c * query(1, 1, mid);
if (s == val) {
return mid - 1;
}
if (t[u].l == t[u].r) {
return t[u].l - 1;
}
if (s > val) {
return check(ls, val, c);
} else {
return check(rs, val, c);
}
}
inline void coder() {
int W, n, q;
read(n);
read(q);
read(W);
for (int i = 1; i <= n; ++i) {
read(w[i]);
}
build(1, 1, n);
while(q--) {
int v, x, y;
read(x);
read(y);
read(v);
modify(1, x, y, v);
int ans = 0;
int s = 1ll;
int val = W;
while (s * t[1].sum < val) {
val -= s * t[1].sum;
ans += n;
s <<= 1ll;
}
ans += check(1, val, s);
cout << ans << '\n';
}
}
main() {
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
coder();
return 0;
}