#include <bits/stdc++.h>
using namespace std;

#ifdef ONLINE_JUDGE
#define debug(...) 42
#define debugArr(...) 42
#endif

#define ll long long 
#define vll vector<ll>
#define loop(i, c, n) for(ll i = c; i < n; ++i)
#define feach(x, a) for(auto& x : a)
#define endl "\n"
#define pb push_back
#define all(x) x.begin(), x.end()

/*
Queries act on operations, and operations act on the array
so use a difference array once at each layer
*/

void solve(){
    ll n, m, k; cin >> n >> m >> k;
    vll a(n); feach(x, a) cin >> x;
    vector<array<ll, 3>> ops(m);
    loop(i, 0, m){
        cin >> ops[i][0] >> ops[i][1] >> ops[i][2];
        --ops[i][0], --ops[i][1];
    }
    
    // this gives me the count of each operations at the end
    vll cntops(m + 1, 0);
    
    loop(i, 0, k){
        ll x, y; cin >> x >> y; --x, --y;
        
        // a query i applies operations [x_i, y_i] on the array
        // thus, each operation get incremented by 1 in count for
        // each query

        // so we get +1 incremented in [x_i, y_i]

        // apply diff array technique on this
        cntops[x]++;
        cntops[y + 1]--;
    }
    partial_sum(all(cntops), cntops.begin()); // prefix sum
    debug(cntops);
    
    // this is the diff array to find the final diff being applied 
    // to my original array
    vll diff(n + 1, 0); 
    
    loop(i, 0, m){
        
        // an operation i increments [l_i,r_i] by op[i][2] or d_i, 
        // and we have cntops[i] number of operations of ith operation 
        // after processing k queries
        
        // so we get op[i][2] * cntops[i] incremented in [l_i, r_i]
        
        // apply diff array technique on this
        diff[ops[i][0]] += cntops[i] * ops[i][2]; 
        diff[ops[i][1] + 1] -= cntops[i] * ops[i][2];
    }
    partial_sum(all(diff), diff.begin());
    debug(diff);
    vll res(n, 0);
    loop(i, 0, n){
        res[i] = diff[i] + a[i];
    }
    loop(i, 0, n){
        cout << res[i] << " \n"[i == n - 1];
    }
}

int32_t main(){
    ios_base::sync_with_stdio(0); cin.tie(0);
    int tc = 1; // cin >> tc;
    while(tc--) solve();
    return 0;
}