#include <bits/stdc++.h>
using namespace std;
long long int arr[100005], start[100005], finish[100005], start1[100005],
    finish1[100005];
struct data {
  long long int s, f, d;
} op[100005];
int main() {
  long long int n, m, k, x, y, total, i;
  memset(start, 0, sizeof(start));
  memset(start1, 0, sizeof(start1));
  memset(finish, 0, sizeof(finish));
  memset(finish1, 0, sizeof(finish1));
  cin >> n >> m >> k;
  for (i = 1; i <= n; i++) cin >> arr[i];
  for (i = 1; i <= m; i++) {
    cin >> op[i].s >> op[i].f >> op[i].d;
  }
  for (i = 1; i <= k; i++) {
    cin >> x >> y;
    start[x]++;
    finish[y]++;
  }
  total = 0;
  for (i = 1; i <= m; i++) {
    total += start[i];
    start1[op[i].s] += (total * op[i].d);
    finish1[op[i].f] += (total * op[i].d);
    total -= finish[i];
  }
  total = 0;
  for (i = 1; i <= n; i++) {
    total += start1[i];
    if (i == 1)
      cout << arr[i] + total;
    else
      cout << " " << arr[i] + total;
    total -= finish1[i];
  }
  puts("");
  return 0;
}
