#include <bits/stdc++.h>
int m, k;
int l[(100005)], r[(100005)];
long long a[(100005)], b[(100005)], ti[(100005)], query[(100005)], op[(100005)],
    d[(100005)];
void ft_update(long long* ft, int i, long long x) {
  for (; i <= (100005); i += (i & -i)) ft[i] += x;
}
long long ft_query(long long* ft, int i) {
  long long acc;
  for (acc = 0; i > 0; i -= (i & -i)) acc += ft[i];
  return acc;
}
void ft_range_update(long long* ft, int l, int r, long long x) {
  ft_update(ft, l, x);
  ft_update(ft, r + 1, -x);
}
int main() {
  int n, i, x, y;
  scanf("%d %d %d", &n, &m, &k);
  for (i = 1; i <= n; ++i) {
    scanf("%d", &x);
    ft_range_update(a, i, i, x);
  }
  for (i = 1; i <= m; ++i) {
    scanf("%d %d %lld", &l[i], &r[i], &d[i]);
  }
  for (i = 0; i < k; ++i) {
    scanf("%d %d", &x, &y);
    ft_range_update(ti, x, y, 1);
  }
  for (i = 1; i <= m; ++i) {
    long long cnt = ft_query(ti, i);
    ft_range_update(a, l[i], r[i], d[i] * cnt);
  }
  for (i = 1; i <= n; ++i) {
    printf("%lld", ft_query(a, i));
    if (i == n)
      printf("\n");
    else
      printf(" ");
    ;
  }
  return 0;
}
