#include <bits/stdc++.h>
using namespace std;
typedef struct {
  int l;
  int r;
  int d;
} Operation;
int main(int argc, const char* argv[]) {
  int n, m, k;
  scanf("%d %d %d", &n, &m, &k);
  int array[n];
  Operation op[m];
  vector<long long int> operations(n + 1, 0);
  vector<long long int> queries(m + 1, 0);
  for (int i = 0; i < n; i++) scanf("%d", &array[i]);
  for (int i = 0; i < m; i++) scanf("%d %d %d", &op[i].l, &op[i].r, &op[i].d);
  for (int i = 0; i < k; i++) {
    int x, y;
    scanf("%d %d", &x, &y);
    queries[x - 1] += 1;
    queries[y] -= 1;
  }
  long long int cont = 0;
  for (int i = 0; i < m; i++) {
    cont += queries[i];
    operations[op[i].l - 1] += op[i].d * cont;
    operations[op[i].r] -= op[i].d * cont;
  }
  cont = 0;
  for (int i = 0; i < n; i++) {
    cont += operations[i];
    cout << array[i] + cont << " ";
  }
  cout << endl;
  return 0;
}
