n, m, q =map(int,input().split())
s =[0]+list(map(int,input().split()))
lst =[list(map(int,input().split()))for _ inrange(q)]
lst.sort()
diff =[0]*(n +2)# 差分数组
idx =0; ind =0# 当前何种能量 处在何处for p, k in lst:if p != idx:# 开始下一个能量的计算
idx = p; ind = k -1if ind >= k + s[p]-1or ind >= n:# 能量相当于没加continue
left =max(ind +1, k); right =min(k + s[p]-1, n)# 将[left, right]整体加1
diff[left]+=1; diff[right +1]-=1
ind = right
# 前缀和
score =0for i inrange(1, n +1):
score += diff[i]print(score, end =" ")
from bisect import bisect
n =int(input())
p =list(map(float,input().split()))
q =int(input())# 将 x 转换为对应的数值
px =list(p[i -1]for i inmap(int,input().split()))
p.sort()for i inrange(q):del p[bisect(p, px[i])-1]
n -=1if n %2==0:print((p[n //2-1]+ p[n //2])/2, end=" ")else:print(p[n //2], end=" ")