//https://vjudge.net/contest/331523#problem/A
/*
* Author : MaxSally
*/
/********   All Required Header Files ********/
#include<bits/stdc++.h>
using namespace std;
/*******  All Required define Pre-Processors and typedef Constants *******/
#define SCD(t) scanf("%d",&t)
#define SCLD(t) scanf("%ld",&t)
#define SCLLD(t) scanf("%lld",&t)
#define SCC(t) scanf("%c",&t)
#define SCS(t) scanf("%s",t)
#define SCF(t) scanf("%f",&t)
#define SCLF(t) scanf("%lf",&t)
#define mem(a, b) memset(a, (b), sizeof(a))
#define rep(i, j, k) for (int i = j ; i <= k ; ++i)
#define rrep(i, j, k) for (int i = j; i >= k; --i)
#define all(cont) cont.begin(), cont.end()
#define rall(cont) cont.end(), cont.begin()
#define foreach(i, a) for(auto i: a)
#define forEach(it, l) for (auto it = l.begin(); it != l.end(); it++)
#define in(A, B, C) assert( B <= A && A <= C)
#define mp make_pair
#define pb push_back
#define inf (int) (1e9 + 7)
#define epsi 1e-9
#define PI 3.1415926535897932384626433832795
#define mod 1000000007
#define read(type) readInt<type>()
#define io ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
#define ll long long int
#define left tuyiuoi
#define right fgjhk
#define ss second
#define ff first
#define debug(a) cout << #a << ": " << a << endl
#define debuga1(a, l, r) rep(i, l, r) cout << a[i] << " "; cout << endl
#define Flag(n) cout << "here " << n << endl
const double pi=acos(-1.0);
typedef pair<int, int> pii;
typedef vector<int> vi;
typedef vector<ll> vl;
typedef vector<vl> vll;
typedef pair<ll, ll> pll;
typedef vector<string> vs;
typedef vector<pii> vii;
typedef vector<pll> vpll;
typedef vector<vi> vvi;
typedef map<int,int> MPII;
typedef set<int> SETI;
typedef multiset<int> MSETI;
typedef long int int32;
typedef unsigned long int uint32;
typedef long long int int64;
typedef unsigned long long int  uint64;

const int N = 200005;
int n, q, s, t;
ll a[N], totalDegree, b[N];

ll processLeft(int l, ll x){
    if(b[l] >= 0){
        if(x >= 0){
            totalDegree -= 1LL * s * abs(x);
        }else{
            if(b[l] + x >= 0){
                totalDegree += 1LL * s * abs(x);
            }else{
                totalDegree += 1LL * s * abs(b[l]);
                totalDegree += 1LL * t * abs(b[l] + x) ;
            }
        }
    }else{
        if(x <= 0){
            totalDegree += 1LL * t * abs(x);
        }else{
            if(b[l] + x <= 0){
                totalDegree -= 1ll * t * abs(x);
            }else{
                totalDegree -= 1LL * t * abs(b[l]);
                totalDegree -= 1LL * s * abs(b[l] + x);
            }
        }
    }
}

ll secondProcessRight(int r, ll x){
    if(b[r] >= 0){
        if(x <= 0){
            totalDegree -= 1LL * s * abs(x);
        }else{
            if(b[r] - x >= 0){
                totalDegree += 1LL * s * abs(x);
            }else{
                totalDegree += 1LL * s * abs(b[r]);
                totalDegree += 1LL * t * abs(b[r] - x) ;
            }
        }
    }else{
        if(x >= 0){
            totalDegree += 1LL * t * abs(x);
        }else{
            if(b[r] - x <= 0){
                totalDegree -= 1ll * t * abs(x);
            }else{
                totalDegree -= 1LL * t * abs(b[r]);
                totalDegree -= 1LL * s * abs(b[r] - x);
            }
        }
    }
}

ll processRight(int r, ll x){
    if(b[r + 1] <= 0){
        if(x <= 0){
            totalDegree -= 1LL * s * abs(x);
        }else{
            if(b[r + 1] + x <= 0){
                totalDegree += 1LL * s * abs(x);
            }else{
                totalDegree += 1LL * s * abs(b[r + 1]);
                totalDegree += 1LL * t * abs(b[r + 1] + x);
            }
        }
    }else{
        if(x >= 0){
            totalDegree += 1LL * t * abs(x);
        }else{
            if(b[r + 1] + x >= 0){
                totalDegree -= 1LL * t * abs(x);
            }else{
                totalDegree -= 1ll * t * abs(b[r + 1]);
                totalDegree -= 1ll * s * abs(b[r + 1] + x);
            }
        }
    }
}

int main(){
    io;
    //freopen("input.txt", "r", stdin);
    cin >> n >> q >> s >> t;
    totalDegree = 0;
    int dummy; cin >> dummy;
    rep(i, 1, n){
        cin >> a[i];
        if(a[i] > a[i - 1]){
            totalDegree -= 1LL * s * abs(a[i] - a[i - 1]);
        }else{
            totalDegree += 1ll * t * abs(a[i] - a[i - 1]);
        }
        b[i] = a[i] - a[i - 1];
    }
    //debug(totalDegree);
    while(q--){
        int l, r;
        ll x; cin >> l >> r >> x;
        processLeft(l, x);
        if(r < n)
            processLeft(r + 1, -x);
        b[l] += x;
        b[r + 1] -= x;
        cout << totalDegree << '\n';
        //debuga1(b, 0, n);
    }

    return 0;
}




Measured memory_bytes: 6292