#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;
}
