""" 1725: X XYx XYxYXyx XYxYXyx Y XYxyXyx XYxYXyxYXYxyXyx Y XY 1726: コップを水平移動して、最大スコアを求めよ。 800*800*4 800*800の組み合わせに関して、 これだけ水平移動するとこれだけ利得 を全て計算すればよい """ import sys from sys import stdin def solve(): dic = {} for i in range(N): a,b = ab[i] p = P[i] for c,d in cd: x = c-a y = d-b tup = (x,y) if tup not in dic: dic[tup] = 0 dic[tup] += p ret = 0 for tup in dic: ret = max(ret , dic[tup]) return ret N,M = map(int,stdin.readline().split()) P = list(map(int,stdin.readline().split())) ab = [] cd = [] for i in range(N): a,b = map(int,stdin.readline().split()) ab.append( [a,b] ) for i in range(M): c,d = map(int,stdin.readline().split()) cd.append( [c,d] ) ans = 0 ans = max(ans , solve()) for i in range(N): ab[i][0] *= -1 ans = max(ans , solve()) for i in range(N): ab[i][1] *= -1 ans = max(ans , solve()) for i in range(N): ab[i][0] *= -1 ans = max(ans , solve()) print (ans)