#include <bits/stdc++.h>
using namespace std;
struct node {
  long l;
  long r;
  long d;
};
long long A[100005];
node B[100005];
long long s[100005];
long long s1[100005];
int main() {
  int n, m, k;
  scanf("%d%d%d", &n, &m, &k);
  for (int i = 0; i < (n); i++) {
    int x;
    scanf("%d", &x);
    A[i + 1] = x;
  }
  memset(s, 0, sizeof(s));
  for (int i = 0; i < (m); i++) {
    int l, r, d;
    scanf("%d%d%d", &l, &r, &d);
    B[i + 1] = {l, r, d};
  }
  memset(s1, 0, sizeof(s1));
  long int x, y;
  for (int i = 0; i < (k); i++) {
    scanf("%ld%ld", &x, &y);
    s1[x] = s1[x] + 1;
    s1[y + 1] = s1[y + 1] - 1;
  }
  for (int i = 0; i < (m); i++) {
    s[B[i + 1].l] += s1[i + 1] * B[i + 1].d;
    s[B[i + 1].r + 1] -= s1[i + 1] * B[i + 1].d;
    s1[i + 2] += s1[i + 1];
  }
  for (int i = 0; i < (n); i++) {
    cout << (A[i + 1] + s[i + 1]) << " ";
    s[i + 2] = s[i + 2] + s[i + 1];
  }
  return 0;
}
