#include using namespace std; using ll = long long; bool chmax(auto &a, auto b) { return a < b ? a = b, 1 : 0; } bool chmin(auto &a, auto b) { return a > b ? a = b, 1 : 0; } int main() { cin.tie(nullptr); ios::sync_with_stdio(false); ll N, D; cin >> N >> D; vector A(N); for (auto &&a : A) cin >> a; unordered_map> mp; for (int i = 0; i < N; ++i) { mp[A[i]].emplace_back(i); } ll ans = 0; for (int j = 1; j < N-1; ++j) { ll i = lower_bound(mp[A[j] - D].begin(), mp[A[j] - D].end(), j) - mp[A[j] - D].begin(); ll k = mp[A[j] + D].end() - upper_bound(mp[A[j] + D].begin(), mp[A[j] + D].end(), j); ans += i * k; } cout << ans << '\n'; }