N,M,A = map(int, input().split()) L = [[int(l) for l in input().split()] for _ in range(M)] from operator import itemgetter L.sort(key=itemgetter(1)) dp0 = [0]*(N+1) dp1 = [0]*(N+1) j = 0 for i in range(1, N+1): dp0[i] = max(dp0[i-1], dp1[i-1]) dp1[i] = dp0[i]-A while j < M and L[j][1] == i: if L[j][0] == 1 and L[j][1] == N: dp1[i] = max(dp1[i], L[j][2]) elif L[j][0] == 1: dp1[i] = max(dp1[i], L[j][2]-A) elif L[j][1] == N: dp1[i] = max(dp1[i], dp1[L[j][0]-1]+L[j][2], dp0[L[j][0]-1]+L[j][2]-A) else: dp1[i] = max(dp1[i], dp1[L[j][0]-1]+L[j][2]-A, dp0[L[j][0]-1]+L[j][2]-2*A) j += 1 print(max(max(dp0), max(dp1)))