#include <bits/stdc++.h>
using namespace std;
long long dp[2][1501000];
deque<int> mn;
void add(int id, int mask) {
  while (!mn.empty() && dp[mask][mn.back()] >= dp[mask][id]) mn.pop_back();
  mn.push_back(id);
}
int main() {
  int n, m, d;
  cin >> n >> m >> d;
  long long sum = 0;
  for (int i = 0, last = 0; i < m; i++) {
    int a, b, t;
    cin >> a >> b >> t;
    a--, t--, mn.clear();
    int limit = min(1LL * n, 1LL * (t - last) * d);
    for (int x = 0; x < limit; x++) add(x, !(i & 1));
    for (int x = 0; x < n; x++) {
      if (x + limit < n) add(x + (t - last) * d, !(i & 1));
      if (mn[0] < x - limit) mn.pop_front();
      dp[i & 1][x] = dp[!(i & 1)][mn[0]] + abs(x - a);
    }
    sum += b, last = t;
  }
  cout << sum - *min_element(dp[!(m & 1)], dp[!(m & 1)] + n) << endl;
  return 0;
}
