class Imos2D(): def __init__(self, W, H): self.W = W self.H = H self.data = [[0] * (W + 1) for w in range(H + 1)] def range_add(self, x1, y1, w, h, d): x2 = min(x1 + w + 1, self.W) y2 = min(y1 + h + 1, self.H) data = self.data data[y1][x1] += d data[y1][x2] -= d data[y2][x1] -= d data[y2][x2] += d def read_all(self): decoded = [[0] * self.W for h in range(self.H)] current_row = [0] * self.W for y, row in enumerate(self.data[:-1]): prev_row = current_row current_row = decoded[y] cum = 0 for x, val in enumerate(row[:-1]): cum += val current_row[x] = cum + prev_row[x] return decoded X = 500 Y = 500 N, K = map(int, input().split()) HP = [[0] * (2 * Y + 1) for w in range(2 * X + 1)] for n in range(N): x, y, hp = map(int, input().split()) HP[y + Y][x + X] = hp attacks = Imos2D(X * 2 + 1, Y * 2 + 1) for k in range(K): ax, ay, w, h, d = map(int, input().split()) attacks.range_add(ax + X, ay + Y, w, h, d) damage = attacks.read_all() cumsum = 0 for row_d, row_hp in zip(damage, HP): for d, hp in zip(row_d, row_hp): if hp and hp > d: cumsum += hp - d print(cumsum)