from bisect import bisect_left from collections import defaultdict 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 X = int(data[idx]) idx += 1 C = list(map(int, data[idx:idx+N])) idx += N # Preprocess color positions (1-based) color_pos = [[] for _ in range(6)] # colors 1-5 for i in range(N): c = C[i] color_pos[c].append(i + 1) # positions are 1-based sum_Y = defaultdict(int) for _ in range(M): a = int(data[idx]) idx += 1 b = int(data[idx]) idx += 1 y = int(data[idx]) idx += 1 sum_Y[(a, b)] += y score = [0] * (N + 1) # score[k] for 0 <= k <= N for (a, b), y_total in sum_Y.items(): if not color_pos[b]: continue lst = color_pos[b] idx_a = bisect_left(lst, a) for i in lst[idx_a:]: k = i - a if k <= N: score[k] += y_total max_total = 0 for k in range(N + 1): current = X * k + score[k] if current > max_total: max_total = current print(max_total) if __name__ == '__main__': main()