import sequtils,strutils,algorithm var N,M,A : int dp : array[-1..100010, array[2,int]] (N, M, A) = stdin.readline.split.map(parseInt) type t = tuple[l, r, p : int] var ts = newSeq[t](0) var l, r, p : int for m in 1..M: (l, r, p) = stdin.readline.split.map(parseInt) ts.add((l, r, p)) ts = ts.sortedByIt(it.r) int p = 0 for i in 1..N: dp[i + 1][0] = max(dp[i][0], dp[i][1]) dp[i + 1][1] = max(dp[i][0], dp[i][1]) - A while p < M and ts[p].r == i: var a = ts[p] dp[i + 1][1] = max(dp[a.l][1] + a.p - A, dp[i + 1][1]) p += 1 echo max(dp[N + 1][0],dp[N + 1][1] + A)