#include<bits/stdc++.h>
using namespace std;
#define int long long
#define pii pair<int , int>
#define FOR(i , l , r) for(int i = (l) ; i <= (r) ; i++)
#define FOD(i , r , l) for(int i = (r) ; i >= (l) ; i--)
#define endl '\n'
#define fi first
#define se second
#define pb push_back
const int N = 2e5 + 5;
int a[N];
int st[4 * N];
int lazy[4 * N];
int n , q , s , t;
int res = 0;
void down(int idx) {
int k = lazy[idx];
if(k == 0) return;
st[2 * idx] += k;
st[2 * idx + 1] += k;
lazy[2 * idx] += k;
lazy[2 * idx + 1] += k;
lazy[idx] = 0;
}
void update(int idx , int l , int r , int u , int v , int val) {
if(l > v || r < u) return;
if(u <= l && r <= v) {
st[idx] += val;
lazy[idx] += val;
return;
}
down(idx);
int mid = (l + r) / 2;
update(2 * idx , l , mid , u , v , val);
update(2 * idx + 1 , mid + 1 , r , u , v , val);
}
int get(int idx , int l , int r, int pos) {
if(l == r) {
return st[idx];
}
down(idx);
int mid = (l + r) / 2;
if(pos <= mid) return get(2 * idx , l , mid , pos);
else return get(2 * idx + 1 , mid + 1 , r , pos);
}
void solve () {
cin >> n >> q >> s >> t;
FOR(i , 1 , n + 1) {
cin >> a[i];
update(1 , 1 , n + 1, i , i , a[i]);
if(i >= 2) {
if(a[i] > a[i - 1]) res -= s * (a[i] - a[i - 1]);
else res += t * (a[i - 1] - a[i]);
}
}
while(q--) {
int l , r , c; cin >> l >> r >> c;
l++; r++;
int v1 = get(1 , 1 , n + 1, l);
int v2 = get(1 , 1 , n + 1, l - 1);
int v3 = get(1 , 1 , n + 1 , r);
int v4 = get(1 , 1 , n + 1 , r + 1);
update(1 , 1 , n + 1 , l , r , c);
int v5 = get(1 , 1 , n + 1 , l);
int v6 = get(1 , 1 , n + 1 , r);
if(l != 1) {
if(v2 >= v1) res -= t * (v2 - v1);
else res += s * (v1 - v2);
if(v2 >= v5) res += t * (v2 - v5);
else res -= s * (v5 - v2);
}
if(r != n + 1) {
if(v3 >= v4) res -= t * (v3 - v4);
else res += s * (v4 - v3);
if(v6 >= v4) res += t * (v6 - v4);
else res -= s * (v4 - v6);
}
cout << res << endl;
}
}
main () {
ios_base :: sync_with_stdio(false);
cin.tie(NULL);
solve();
return 0;
}