Greg has an array *a* = *a*<sub class="lower-index">1</sub>, *a*<sub class="lower-index">2</sub>, ..., *a*<sub class="lower-index">*n*</sub> and *m* operations. Each operation looks as: *l*<sub class="lower-index">*i*</sub>, *r*<sub class="lower-index">*i*</sub>, *d*<sub class="lower-index">*i*</sub>, (1 ≤ *l*<sub class="lower-index">*i*</sub> ≤ *r*<sub class="lower-index">*i*</sub> ≤ *n*). To apply operation *i* to the array means to increase all array elements with numbers *l*<sub class="lower-index">*i*</sub>, *l*<sub class="lower-index">*i*</sub> + 1, ..., *r*<sub class="lower-index">*i*</sub> by value *d*<sub class="lower-index">*i*</sub>.

Greg wrote down *k* queries on a piece of paper. Each query has the following form: *x*<sub class="lower-index">*i*</sub>, *y*<sub class="lower-index">*i*</sub>, (1 ≤ *x*<sub class="lower-index">*i*</sub> ≤ *y*<sub class="lower-index">*i*</sub> ≤ *m*). That means that one should apply operations with numbers *x*<sub class="lower-index">*i*</sub>, *x*<sub class="lower-index">*i*</sub> + 1, ..., *y*<sub class="lower-index">*i*</sub> to the array.

Now Greg is wondering, what the array *a* will be after all the queries are executed. Help Greg.
The first line contains integers *n*, *m*, *k* (1 ≤ *n*, *m*, *k* ≤ 10<sup class="upper-index">5</sup>). The second line contains *n* integers: *a*<sub class="lower-index">1</sub>, *a*<sub class="lower-index">2</sub>, ..., *a*<sub class="lower-index">*n*</sub> (0 ≤ *a*<sub class="lower-index">*i*</sub> ≤ 10<sup class="upper-index">5</sup>) — the initial array.

Next *m* lines contain operations, the operation number *i* is written as three integers: *l*<sub class="lower-index">*i*</sub>, *r*<sub class="lower-index">*i*</sub>, *d*<sub class="lower-index">*i*</sub>, (1 ≤ *l*<sub class="lower-index">*i*</sub> ≤ *r*<sub class="lower-index">*i*</sub> ≤ *n*), (0 ≤ *d*<sub class="lower-index">*i*</sub> ≤ 10<sup class="upper-index">5</sup>).

Next *k* lines contain the queries, the query number *i* is written as two integers: *x*<sub class="lower-index">*i*</sub>, *y*<sub class="lower-index">*i*</sub>, (1 ≤ *x*<sub class="lower-index">*i*</sub> ≤ *y*<sub class="lower-index">*i*</sub> ≤ *m*).

The numbers in the lines are separated by single spaces.
#    Author : Mohamed Yousef
#    Date   : 2023-05-01
import sys
import math
import bisect
import collections
import itertools
import heapq
from itertools import accumulate, combinations, permutations, chain
from collections import defaultdict, deque, Counter
sys.setrecursionlimit(50000)  # To increase Recursion depth in py
def mvalues(): return map(int, sys.stdin.readline().split())
def lvalues(): return list(map(int, sys.stdin.readline().split()))
def svalues(): return sys.stdin.readline().strip()
def test(): return int(sys.stdin.readline())


n, m, k = mvalues()
arr = lvalues()
operation = [0] * (m + 1)
store = []

for i in range(m):
    store.append(lvalues())
# print(store)

for i in range(k):
    a, b = mvalues()
    operation[a - 1] += 1
    operation[b] -= 1

for i in range(1, m):
    operation[i] += operation[i - 1]
# print(operation)

ans = [0] * (n + 1)
for i in range(m):
    ans[store[i][0] - 1] += (operation[i] * store[i][2])
    ans[store[i][1]] -= (operation[i] * store[i][2])
# print(ans)
for i in range(1, n):
    ans[i] += ans[i - 1]

for i in range(n):
    ans[i] += arr[i]

# print(ans)
ans = ans[:-1]
sys.stdout.write(" ".join(map(str, ans)))
