#include <bits/stdc++.h>
using namespace std;
const int oo = (int)1e9 + 7;
const int N = (int)1e5 + 5;
int a[N];
int cnt[N];
long long ans[N];
struct op {
  int l;
  int r;
  int d;
};
int main() {
  int n, m, k;
  scanf("%d %d %d", &n, &m, &k);
  for (int i = 1; i <= n; ++i) scanf("%d", a + i);
  vector<op> o(m + 1);
  for (int i = 1; i <= m; ++i) scanf("%d %d %d", &o[i].l, &o[i].r, &o[i].d);
  while (k--) {
    int x, y;
    scanf("%d %d", &x, &y);
    cnt[x]++;
    cnt[y + 1]--;
  }
  for (int i = 1; i <= m; ++i) {
    cnt[i] += cnt[i - 1];
    if (!cnt[i]) continue;
    op p = o[i];
    long long v = (long long)p.d * (long long)cnt[i];
    ans[p.l] += v;
    ans[p.r + 1] -= v;
  }
  for (int i = 1; i <= n; ++i) {
    ans[i] += ans[i - 1];
    printf("%I64d ", ans[i] + a[i]);
  }
  return 0;
}
