#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include template inline bool chmax(T& a, T b) { if (a < b) { a = b; return 1; } return 0; } template inline bool chmin(T& a, T b) { if (a > b) { a = b; return 1; } return 0; } const long long MAX = 5100000; const long long INF = 1LL << 60; const long long mod = 1000000007LL; //const long long mod = 998244353LL; using namespace std; typedef unsigned long long ull; typedef long long ll; int main() { /* cin.tie(nullptr); ios::sync_with_stdio(false); */ ll N, M, A; scanf("%lld %lld %lld", &N, &M, &A); vector>> g(N); vector deg(N); vector up(N); for (ll i = 0; i < M; i++) { ll l, r, p; scanf("%lld %lld %lld", &l, &r, &p); l--; r--; g[r].emplace_back(l, p); } vector dp(N, -INF); ll mx = 0; for (ll i = 0; i < N; i++) { dp[i] = mx; if (i != N - 1) dp[i] -= A; for (auto pre : g[i]) { if (pre.first == 0) { ll tmp = pre.second; if (i != N - 1) tmp -= A; chmax(dp[i], tmp); } else { ll tmp = dp[pre.first - 1] + pre.second; if (i != N - 1) tmp -= A; chmax(dp[i], tmp); } } chmax(mx, dp[i]); } cout << max(0LL, *max_element(dp.begin(), dp.end())) << endl; return 0; }