#include <bits/stdc++.h>
using namespace std;
struct FT {
  int n;
  vector<int> ft;
  void init(int l) {
    n = l + 1;
    ft.resize(n);
  }
  void up(int p, int v) {
    for (int i = p; i < n; i += i & -i) ft[i] += v;
  }
  int get(int p) {
    int ans = 0;
    for (int i = p; i; i -= i & -i) ans += ft[i];
    return ans;
  }
};
void solve() {
  int n, k;
  cin >> n >> k;
  vector<pair<int, pair<int, int>>> a(n);
  vector<int> q(n);
  for (int i = 0; i < n; ++i) {
    cin >> a[i].first >> a[i].second.first >> a[i].second.second;
    q[i] = a[i].second.second;
  }
  sort(q.begin(), q.end());
  q.erase(unique(q.begin(), q.end()), q.end());
  int m = q.size();
  int pos[n];
  vector<FT> ft(m);
  vector<vector<int>> x(m);
  sort(a.begin(), a.end(),
       [](pair<int, pair<int, int>> a, pair<int, pair<int, int>> b) {
         return a.second.first > b.second.first;
       });
  for (int i = 0; i < n; ++i) {
    pos[i] = (lower_bound(q.begin(), q.end(), a[i].second.second) - q.begin());
    x[pos[i]].push_back(a[i].first);
  }
  for (int i = 0; i < m; ++i) {
    sort(x[i].begin(), x[i].end());
    x[i].erase(unique(x[i].begin(), x[i].end()), x[i].end());
    ft[i].init(x[i].size());
  }
  long long ans = 0;
  for (int i = 0; i < n; ++i) {
    int qi = pos[i];
    int ql =
        lower_bound(q.begin(), q.end(), a[i].second.second - k) - q.begin();
    int qr =
        upper_bound(q.begin(), q.end(), a[i].second.second + k) - q.begin();
    for (int j = ql; j < qr; ++j) {
      int xl = lower_bound(x[j].begin(), x[j].end(),
                           a[i].first - a[i].second.first) -
               x[j].begin();
      int xr = upper_bound(x[j].begin(), x[j].end(),
                           a[i].first + a[i].second.first) -
               x[j].begin();
      if (xl < xr) ans += 1LL * ft[j].get(xr) - ft[j].get(xl);
    }
    ft[qi].up(
        1 + lower_bound(x[qi].begin(), x[qi].end(), a[i].first) - x[qi].begin(),
        1);
  }
  cout << ans << "\n";
}
int main() {
  ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  ;
  int t = 1;
  while (t--) {
    solve();
  }
  return 0;
}
