#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:66777216")
using namespace std;
int _bufint;
inline int in() {
  scanf("%d", &_bufint);
  return _bufint;
}
const long long LINF = ~((1ll) << 63);
const int INF = ~(1 << 31);
const double eps = 1e-6;
int main() {
  int n = in(), m = in(), k = in();
  vector<long long> a;
  for (int i = 0; i < n; ++i) {
    a.push_back(in());
  }
  vector<pair<pair<int, int>, long long> > v;
  for (int i = 0; i < m; ++i) {
    int l = in() - 1, r = in() - 1, d = in();
    v.push_back(make_pair(make_pair(l, r), d));
  }
  vector<pair<int, int> > q;
  for (int i = 0; i < k; ++i) {
    int l = in() - 1, r = in() - 1;
    q.push_back(make_pair(l, r));
  }
  vector<long long> mul(200000, 0);
  for (int i = 0; i < q.size(); ++i) {
    mul[q[i].first]++;
    mul[q[i].second + 1]--;
  }
  long long mult = 0;
  for (int i = 0; i < m; ++i) {
    mult += mul[i];
    v[i].second *= mult;
  }
  vector<long long> ad(200000, 0);
  for (int i = 0; i < v.size(); ++i) {
    ad[v[i].first.first] += v[i].second;
    ad[v[i].first.second + 1] -= v[i].second;
  }
  long long add = 0;
  for (int i = 0; i < n; ++i) {
    add += ad[i];
    a[i] += add;
  }
  for (int i = 0; i < n; ++i) {
    printf("%I64d ", a[i]);
  }
  cout << endl;
  return 0;
}
