func_code_string: #include <bits/stdc++.h>   using namespace std;   const long long int MOD = 1000000007;   const long long BIG = 1446803456761533460LL;   const int Big = 336860180;   const long long int INF = LONG_LONG_MAX;   const long long int adj4[4][2] = {{0, 1}, {0, -1}, {1, 0}, {-1, 0}};   const long long int adj8[8][2] = {{0, 1},   {0, -1}, {1, 0},  {-1, 0},                                     {-1, -1}, {1, -1}, {-1, 1}, {1, 1}};   long long int clk_ar[10];   long long int gcd(long long int a, long long int b) {     return b == 0 ? a : gcd(b, a % b);   }   long long int powMod(long long int a, long long int b) {     long long int n = 1;     long long int p = a;     while (b > 0) {       if (b % 2 == 1) {         n *= p;         n %= MOD;       }       p *= p;       p %= MOD;       b /= 2;     }     return n;   }   long long int modularInverse(long long int a) { return powMod(a, MOD - 2); }   stringstream sss;   const long long int maxn = 150010;   const long long int maxm = 310;   long long int dp[2][maxn];   long long int ts[maxm];   long long int ai[maxm];   void MAIN() {     long long int n, m, V;     cin >> n >> m >> V;     long long int sb = 0;     for (long long int i = 0; i < (m); ++i) {       long long int b;       cin >> ai[i + 1] >> b >> ts[i + 1];       --ai[i + 1];       sb += b;     }     for (long long int i = (1); i < (m + 1); ++i) {       long long int d = (ts[i] - ts[i - 1]) * V;       deque<long long int> q;       for (long long int j = 0; j < (min(d, n)); ++j) {         while (!q.empty() && dp[i & 1 ^ 1][j] >= dp[i & 1 ^ 1][q.back()]) {           q.pop_back();         }         q.push_back(j);       }       for (long long int j = 0; j < (n); ++j) {         if (j + d < n) {           while (!q.empty() && dp[i & 1 ^ 1][j + d] >= dp[i & 1 ^ 1][q.back()]) {             q.pop_back();           }           q.push_back(j + d);         }         dp[i & 1][j] = dp[i & 1 ^ 1][q.front()] - abs(j - ai[i]);         if (q.front() == j - d) {           q.pop_front();         }       }     }     cout << (sb + *max_element(dp[m & 1], dp[m & 1] + n)) <<   n ;   }   int main() {     ios_base::sync_with_stdio(false);     cin.tie(0);     cout.tie(0);     cout << fixed << setprecision(10);     sss << R (   50 3 1   49 1 1   26 1 4   6 1 10       ) ;     MAIN();     return 0;   }   