N, M = list(map(int, input().split()))

A = list(map(int, input().split()))

BC = [list(map(int, input().split())) for i in range(M)]



# Cについて大きい順にソート

BC.sort(key=lambda x: x[1], reverse=True)



temp = []

for i in range(M):

        # CiをBi個追加

    temp += [BC[i][1]] * BC[i][0]

    if len(temp) > N:

        break



A += temp

A.sort(reverse=True)



print((sum(A[:N])))

import sys

input = sys.stdin.readline





N, M = list(map(int, input().split()))

A = list(map(int, input().split()))

BC = [list(map(int, input().split())) for _ in range(M)]



# Cについて大きい順にソート

BC.sort(key=lambda x: x[1], reverse=True)



tmp = []

# tmpがN個を超えるまで、cをb個足す

for b, c in BC:

    tmp += [c] * b

    if len(tmp) >= N:

        break



# Aとtmpを混ぜてソート

nums = A + tmp

nums.sort(reverse=True)

# 上からN個の総和

print((sum(nums[:N])))

N, M = list(map(int, input().split()))
A = list(map(int, input().split()))
BC = [list(map(int, input().split())) for i in range(M)]
# Cについて大きい順にソート
BC.sort(key=lambda x: x[1], reverse=True)
temp = []
for i in range(M):
    # CiをBi個追加
    temp += [BC[i][1]] * BC[i][0]
    if len(temp) > N:
        break
A += temp
A.sort(reverse=True)
print((sum(A[:N])))

import sys

input = sys.stdin.readline
N, M = list(map(int, input().split()))
A = list(map(int, input().split()))
BC = [list(map(int, input().split())) for _ in range(M)]
# Cについて大きい順にソート
BC.sort(key=lambda x: x[1], reverse=True)
tmp = []
# tmpがN個を超えるまで、cをb個足す
for b, c in BC:
    tmp += [c] * b
    if len(tmp) >= N:
        break
# Aとtmpを混ぜてソート
nums = A + tmp
nums.sort(reverse=True)
# 上からN個の総和
print((sum(nums[:N])))

+import sys + +input = sys.stdin.readline -BC = [list(map(int, input().split())) for i in range(M)] +BC = [list(map(int, input().split())) for _ in range(M)] -temp = [] -for i in range(M): -    # CiをBi個追加 -    temp += [BC[i][1]] * BC[i][0] -    if len(temp) > N: +tmp = [] +# tmpがN個を超えるまで、cをb個足す +for b, c in BC: +    tmp += [c] * b +    if len(tmp) >= N: -A += temp -A.sort(reverse=True) -print((sum(A[:N]))) +# Aとtmpを混ぜてソート +nums = A + tmp +nums.sort(reverse=True) +# 上からN個の総和 +print((sum(nums[:N])))