n, q, s, t = gets.split.map(&:to_i)
a = (0..n).map { gets.to_i }
temp = 0
height_diff = []
(1..n).each do |i|
    d = a[i] - a[i-1]
    height_diff << d
    temp -= (d > 0 ? s * d : t * d)
end
q.times do
    l, r, x = gets.split.map(&:to_i)
    d = height_diff[l-1]
    temp += (d > 0 ? s * d : t * d)
    height_diff[l-1] += x
    d = height_diff[l-1]
    temp -= (d > 0 ? s * d : t * d)
    if r < n
        d = height_diff[r]
        temp += (d > 0 ? s * d : t * d)
        height_diff[r] -= x
        d = height_diff[r]
        temp -= (d > 0 ? s * d : t * d)
    end
    p temp
end
