N,C = map(int,input().split()) P = [0]+sorted([int(input()) for _ in range(N)],reverse=True) T1 = [] T2 = [] for _ in range(C): t,x = map(int,input().split()) if t==1: T1.append(x) else: T2.append(x) T1 = [0]+sorted(T1,reverse=True) T2 = [0]+sorted(T2,reverse=True) INFTY = 10**9 dp = [[INFTY for _ in range(len(T1)+1)] for _ in range(N+1)] if len(T2)>1: dp[1][0] = max(0,P[1]-P[1]//100*T2[1]) else: dp[1][0] = P[1] for i in range(2,N+1): if len(T2)>i: dp[i][0] = dp[i-1][0]+max(0,P[i]-P[i]//100*T2[i]) else: dp[i][0] = dp[i-1][0]+P[i] if len(T1)>1: dp[1][1] = max(0,P[1]-T1[1]) else: dp[1][1] = P[1] for i in range(2,N+1): for j in range(1,min(i,len(T1))+1): if len(T1)>j: dp[i][j] = dp[i-1][j-1]+max(0,P[i]-T1[j]) else: dp[i][j] = dp[i-1][j-1]+P[i] if len(T2)>i-j: dp[i][j] = min(dp[i][j],dp[i-1][j]+max(0,P[i]-P[i]//100*T2[i-j])) else: dp[i][j] = min(dp[i][j],dp[i-1][j]+P[i]) print(min(dp[N]))