#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
#define l(a, b, i) for (ll i = a; i < b; i++)
#define rl(a, b, i) for (ll i = a; i >= b; i--)
#define vpair vector<pair<ll, ll>>
#define inf LLONG_MAX
#define ninf LLONG_MIN
vector<ll> ft;
ll N, Q, S, T, L, R, X;
ll ls (ll x) {
return (x & (-x));
}
ll query (ll p) {
ll sum = 0;
for (; p; p -= ls(p)) {
sum += ft[p];
}
return sum;
}
void update (ll l, ll r, ll v) { // Kiểu giống difference array á
r++;
for (; l <= N; l += ls(l)) {
ft[l] += v;
}
for (; r <= N; r += ls(r)) {
ft[r] -= v;
}
}
int main() {
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
cin >> N >> Q >> S >> T; vector<ll> vec(N + 1, 0);
ft.assign(N + 1, 0);
l(0, N + 1, i) cin >> vec[i]; // initial altitude
l(1, N + 1, i) update(i, i, vec[i]);
l(1, Q + 1, i) {
cin >> L >> R >> X;
update(L, R, X);
ll last = query(N);
cout << last * T * (-1) << "\n";
}
}