#include<bits/stdc++.h>
#define int long long
using namespace std;
const int MAXN = 3e5 + 5;
int n, m, u, len, cnt, a[MAXN], b[MAXN], L[MAXN], R[MAXN], belong[MAXN];
signed main()
{
cin >> n >> m >> u;
len = sqrt(n);
for(int i=1; i<=n; i++) cin >> a[i], b[i] = a[i];
for(int i=1; i<=n; i++)
{
belong[i] = ceil((1.0*i)/(1.0*len));
if(L[belong[i]] == 0) L[belong[i]] = i;
R[belong[i]] = max(R[belong[i]], i);
}
cnt = ceil((1.0*n) / (1.0*len));
for(int i=1; i<=cnt; i++) sort(a+L[i], a+R[i]+1);
while(m--)
{
int l, r, v, p;
cin >> l >> r >> v >> p;
int k = 0, bl = belong[l], br = belong[r];
if(bl == br)
{
for(int i=l; i<=r; i++) if(a[i] < v) k++;
b[p] = (u*k) / (r-l+1);
for(int i=L[belong[p]]; i<=R[belong[p]]; i++) a[i] = b[i];
sort(a+L[belong[p]], a+R[belong[p]]+1);
}
else
{
for(int i=l; belong[i]==bl; i++) if(a[i] < v) k++;
for(int i=r; belong[i]==br; i--) if(a[i] < v) k++;
for(int i=bl+1; i<br; i++)
{
int t = lower_bound(a+L[i], a+R[i]+1, v) - a;
t = t - L[i];
if(t > 0) k += t;
}
b[p] = (u*k) / (r-l+1);
for(int i=L[belong[p]]; i<=R[belong[p]]; i++) a[i] = b[i];
sort(a+L[belong[p]], a+R[belong[p]]+1);
}
}
for(int i=1; i<=n; i++) cout << b[i] << "\n";
return 0;
}