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)