#include <bits/stdc++.h>
using namespace std;
long long t1[400000];
long long t[400000];
long long a[100000];
void build(long long a[], long long v, long long tl, long long tr) {
  if (tl == tr)
    t[v] = a[tl];
  else {
    long long tm = (tl + tr) / 2;
    build(a, v * 2, tl, tm);
    build(a, v * 2 + 1, tm + 1, tr);
  }
}
void update(long long v, long long tl, long long tr, long long l, long long r,
            long long add) {
  if (l > r) return;
  if (l == tl && tr == r)
    t[v] += add;
  else {
    long long tm = (tl + tr) / 2;
    update(v * 2, tl, tm, l, min(r, tm), add);
    update(v * 2 + 1, tm + 1, tr, max(l, tm + 1), r, add);
  }
}
void update1(long long v, long long tl, long long tr, long long l, long long r,
             long long add) {
  if (l > r) return;
  if (l == tl && tr == r)
    t1[v] += add;
  else {
    long long tm = (tl + tr) / 2;
    update1(v * 2, tl, tm, l, min(r, tm), add);
    update1(v * 2 + 1, tm + 1, tr, max(l, tm + 1), r, add);
  }
}
long long get(long long v, long long tl, long long tr, long long pos) {
  if (tl == tr) return t[v];
  long long tm = (tl + tr) / 2;
  if (pos <= tm)
    return t[v] + get(v * 2, tl, tm, pos);
  else
    return t[v] + get(v * 2 + 1, tm + 1, tr, pos);
}
long long get1(long long v, long long tl, long long tr, long long pos) {
  if (tl == tr) return t1[v];
  long long tm = (tl + tr) / 2;
  if (pos <= tm)
    return t1[v] + get1(v * 2, tl, tm, pos);
  else
    return t1[v] + get1(v * 2 + 1, tm + 1, tr, pos);
}
int main() {
  int n, m, k;
  cin >> n >> m >> k;
  for (int i = 0; i < n; i++) {
    cin >> a[i];
  }
  int l[100000];
  int r[100000];
  int d[100000];
  for (int i = 0; i < m; i++) {
    cin >> l[i] >> r[i] >> d[i];
    t1[i] = 0;
    l[i]--;
    r[i]--;
  }
  for (int i = 0; i < k; i++) {
    int x, y;
    cin >> x >> y;
    update1(1, 0, m - 1, x - 1, y - 1, 1);
  }
  build(a, 1, 0, n - 1);
  for (int i = 0; i < m; i++) {
    long long sk = get1(1, 0, m - 1, i);
    update(1, 0, n - 1, l[i], r[i], (long long)d[i] * (long long)sk);
  }
  for (int i = 0; i < n; i++) {
    cout << get(1, 0, n - 1, i) << " ";
  }
  return 0;
}
