#include <bits/stdc++.h>
const int N = 110000;
long long a[N], c[N], d[N];
int n, m, k;
struct node1 {
  int l, r;
  long long d;
} b[N];
int main() {
  scanf("%d%d%d", &n, &m, &k);
  for (int i = 1; i <= n; i++) scanf("%I64d", &a[i]);
  for (int i = 1; i <= m; i++) scanf("%d%d%I64d", &b[i].l, &b[i].r, &b[i].d);
  for (int i = 1; i <= k; i++) {
    int x, y;
    scanf("%d%d", &x, &y);
    c[x]++;
    c[y + 1]--;
  }
  for (int i = 1; i <= m; i++) c[i] += c[i - 1];
  for (int i = 1; i <= m; i++) {
    d[b[i].l] += (long long)c[i] * b[i].d;
    d[b[i].r + 1] -= (long long)c[i] * b[i].d;
  }
  for (int i = 1; i <= n; i++) d[i] += d[i - 1];
  for (int i = 1; i <= n; i++) printf("%lld ", a[i] + d[i]);
  return 0;
}
