import sys input = sys.stdin.buffer.readline sys.setrecursionlimit(10 ** 7) N, M, A = map(int, input().split()) LX = [[] for _ in range(N + 1)] for _ in range(M): l, r, x = map(int, input().split()) LX[r].append((l, x)) dp0 = [0] * (N + 1) dp1 = [0] * (N + 1) tmp = 0 for r in range(N+1): # 線を引く get = 0 for l, x in LX[r]: get = max(get, dp0[l - 1] + x) if l == 1: get = max(get, dp1[l - 1] + x) else: get = max(get, dp1[l - 1] + x - A) if r < N: dp0[r] = get - A else: dp0[r] = get # 線を引かない tmp = max(tmp, dp0[r-1], dp1[r-1]) dp1[r] = tmp print(max(dp0[N], dp1[N]))