#include <bits/stdc++.h>
using namespace std;
long long a[100005];
long long flag[100005];
long long t[100005];
struct OP {
  int x, y;
  long long val;
};
OP op[100005];
int main() {
  int n, m, k;
  scanf("%d%d%d", &n, &m, &k);
  for (int i = 1; i <= n; i++) scanf("%lld", &a[i]);
  for (int i = 1; i <= m; i++) {
    int x, y;
    long long z;
    scanf("%d%d%lld", &op[i].x, &op[i].y, &op[i].val);
  }
  for (int i = 1; i <= k; i++) {
    int x, y;
    scanf("%d%d", &x, &y);
    t[x]++;
    t[y + 1]--;
  }
  long long sum = 0;
  for (int i = 1; i <= m; i++) {
    sum += t[i];
    op[i].val *= sum;
  }
  for (int i = 1; i <= m; i++) {
    flag[op[i].x] += op[i].val;
    flag[op[i].y + 1] -= op[i].val;
  }
  sum = 0;
  for (int i = 1; i <= n; i++) {
    sum += flag[i];
    printf("%lld ", a[i] + sum);
  }
  printf("\n");
}
