Problem 
                         
                                 小佩蒂亚喜欢圆点。最近,他的母亲给了他 n 个位于 OX 线上的点。 Petya 想知道有多少种方法可以选择三个不同的点,使得所选点中最远的两个点之间的距离不超过 d。
请注意,所选三重奏中点的顺序无关紧要。
输入
第一行包含两个整数:n和d (1 ≤ n ≤ 105; 1 ≤ d ≤ 10< sup>9).下一行包含 n 个整数 x1, x2, ..., xn,模数不超过 109 —给 Petya 的点的 x 坐标。
保证输入中点的坐标严格递增。
输出
打印单个整数 —两个最远点之间的距离不超过 d 的点的三元组数。
请不要使用 %lld 说明符在 C++ 中读取或写入 64 位数字。建议使用 cin、cout 流或 %I64d 说明符。
 
<正文>
| 输入 | 
输出 | 
| 
 4 3 
1 2 3 4 
 | 
4 | 
| 
 4 2 
-3 -2 -1 0 
 | 
2 | 
| 
 5 19 
1 10 20 30 50 
 | 
1 | 
表>
<分区> 
第一个例子中,任意三个不同的点都适合我们。
在第二个例子中,只有 2 个三元组适合我们:{-3, -2, -1} 和 {-2, -1, 0}。
在第三个例子中,一个三元组适合我们:{1, 10, 20}。