#include #include template std::vector vec(int len, T elem) { return std::vector(len, elem); } using lint = long long; constexpr lint INF = 1LL << 60; void solve() { int n, m; lint a; std::cin >> n >> m >> a; std::vector>> rs(n); while (m--) { int l, r; lint p; std::cin >> l >> r >> p; --l, --r; rs[l].emplace_back(r, p); } auto dp = vec(2, vec(n + 1, -INF)); dp[1][0] = 0; for (int l = 0; l < n; ++l) { for (auto [r, p] : rs[l]) { for (int i = 0; i < 2; ++i) { dp[1][r + 1] = std::max(dp[1][r + 1], dp[i][l] + p - a * (2 - i)); } } for (int i = 0; i < 2; ++i) { dp[0][l + 1] = std::max(dp[0][l + 1], dp[i][l]); } } std::cout << std::max(dp[0][n], dp[1][n] + a) << std::endl; } int main() { std::cin.tie(nullptr); std::ios::sync_with_stdio(false); solve(); return 0; }