def main(): import sys input = sys.stdin.read data = input().split() idx = 0 N = int(data[idx]); idx += 1 M = int(data[idx]); idx += 1 P = list(map(int, data[idx:idx+N])); idx += N a = [] b = [] for _ in range(N): ai = int(data[idx]); idx += 1 bi = int(data[idx]); idx += 1 a.append(ai) b.append(bi) c = [] d = [] for _ in range(M): cj = int(data[idx]); idx += 1 dj = int(data[idx]); idx += 1 c.append(cj) d.append(dj) balls_set = set(zip(c, d)) max_total = 0 # Case 1: even x, even y (shift) for i in range(N): for j in range(M): delta_x = c[j] - a[i] delta_y = d[j] - b[i] current_sum = 0 for k in range(N): x = a[k] + delta_x y = b[k] + delta_y if (x, y) in balls_set: current_sum += P[k] if current_sum > max_total: max_total = current_sum # Case 2: even x, odd y (x shift, y flip+shift) for i in range(N): for j in range(M): delta_x = c[j] - a[i] delta_y = d[j] + b[i] current_sum = 0 for k in range(N): x = a[k] + delta_x y = delta_y - b[k] if (x, y) in balls_set: current_sum += P[k] if current_sum > max_total: max_total = current_sum # Case 3: odd x, even y (x flip+shift, y shift) for i in range(N): for j in range(M): cx = c[j] + a[i] s = d[j] - b[i] current_sum = 0 for k in range(N): x = cx - a[k] y = b[k] + s if (x, y) in balls_set: current_sum += P[k] if current_sum > max_total: max_total = current_sum # Case 4: odd x, odd y (both flip+shift) for i in range(N): for j in range(M): cx = c[j] + a[i] dy = d[j] + b[i] current_sum = 0 for k in range(N): x = cx - a[k] y = dy - b[k] if (x, y) in balls_set: current_sum += P[k] if current_sum > max_total: max_total = current_sum print(max_total) if __name__ == '__main__': main()