#include <bits/stdc++.h>
using namespace std;
struct ft {
  vector<long long int> bit;
  long long int n;
  ft(long long int n1) {
    n = n1;
    bit.assign(n, 0);
  }
  long long int sum(long long int r) {
    long long int ret = 0;
    for (; r >= 0; r = (r & (r + 1)) - 1) ret += bit[r];
    return ret;
  }
  void add(long long int idx, long long int d) {
    for (; idx < n; idx = idx | (idx + 1)) bit[idx] += d;
  }
  long long int sum(long long int l, long long int r) {
    return sum(r) - sum(l - 1);
  }
};
void solve() {
  long long int n, m, k;
  cin >> n >> m >> k;
  long long int a[n];
  for (long long int i = 0; i < n; i++) cin >> a[i];
  pair<long long int, pair<long long int, long long int> > p[m + 1];
  for (long long int i = 1; i <= m; i++) {
    cin >> p[i].first >> p[i].second.first >> p[i].second.second;
  }
  long long int pre[m + 2];
  memset(pre, 0, sizeof(pre));
  for (long long int i = 0, x, y; i < k; i++) {
    cin >> x >> y;
    pre[x]++;
    pre[y + 1]--;
  }
  for (long long int i = 1; i <= m; i++) pre[i] += pre[i - 1];
  ft ft1(n + 2);
  for (long long int i = 1; i <= m; i++) {
    p[i].second.second *= pre[i];
    ft1.add(p[i].first - 1, p[i].second.second);
    ft1.add(p[i].second.first, -p[i].second.second);
  }
  for (long long int i = 0; i < n; i++) {
    cout << ft1.sum(0, i) + a[i] << " ";
  }
}
int main() {
  ios_base::sync_with_stdio(false), cin.tie(0), cout.tie(0);
  srand(time(NULL));
  ;
  long long int t = 1;
  while (t--) {
    solve();
  }
}
