#include "bits/stdc++.h"

#pragma warning(disable:4996)
using namespace std;
using ld=long double;
ld eps=1e-9;

struct Edge {
	int from;
	int to;
	long long int val;
};

struct Status {
	int now;
	int hot;
	int rest;
	long long int cost;
};
bool operator<(const Status&l, const Status&r) {
	return l.cost>r.cost;
}

void add_edge(vector<vector<Edge>>&graph,int a, int b, int c) {
	graph[a].push_back(Edge{ a,b,c });
	graph[b].push_back(Edge{ b,a,c });
}

long long int value(const long long int sa, const long long int S, const long long int T) {
	if (sa > 0) {
		return - sa*S;
	}
	else {
		return - sa*T;
	}
}

int main() {
	int N,Q;cin>>N>>Q;
	long long int S,T;cin>>S>>T;
	long long int pre;
	vector<long long int>sas;
	long long int ans=0;
	for (int i = 0; i <= N; ++i) {
		long long int h;cin>>h;
		if (i) {
			long long int sa=h-pre;
			ans+=value(sa,S,T);
			sas.push_back(sa);
		}
		pre=h;
	}
	sas.push_back(0);
	while (Q--) {
		int a,b;cin>>a>>b;
		long long int t;cin>>t;

		a--;
		ans-=value(sas[a],S,T);
		if(b!=N)ans-=value(sas[b],S,T);

		sas[a]+=t;
		if(b!=N)sas[b]-=t;

		ans+=value(sas[a],S,T);
		if(b!=N)ans+=value(sas[b],S,T);

		cout<<ans<<endl;
	}
	return 0;
} 
