import std; void main () { int N, D; readln.read(N, D); auto A = readln.split.to!(int[]); int[int] pre, suf; foreach (i; 0 .. N) { suf[A[i]]++; } long ans = 0; foreach (i; 0 .. N) { suf[A[i]]--; ans += 1L * pre.get(A[i] - D, 0) * suf.get(A[i] + D, 0); pre[A[i]]++; } writeln(ans); } void read (T...) (string S, ref T args) { import std.conv : to; import std.array : split; auto buf = S.split; foreach (i, ref arg; args) { arg = buf[i].to!(typeof(arg)); } }