import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int m=sc.nextInt();
int[] ch=new int[n+1];
for(int i=0;i<n;i++) {
ch[i]=sc.nextInt();
// list.add(sc.nextInt());
}
long ans=0;
for(int i=0;i<n-2;i++) {
int flag=1;
long index=Arrays.binarySearch(ch, ch[i]+m);
long b=index<0?Math.abs(index+1):index;
if(b>(n-1)) {
b=n-1;
}
if(ch[i]+m<ch[(int) b]) {
b--;
}
// System.out.println(b);
if((b-i)>=2) {
ans+=(long)(1+(b-i-1))*(b-i-1)/2;
}
}
System.out.println(ans);
}
}
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.InputMismatchException;
import java.util.Scanner;
public class Main {
// static InputReader sc=new InputReader(System.in);
static PrintWriter out=new PrintWriter(System.out);
static Scanner sc=new Scanner(System.in);
static int n,m;
static long[] ch;
public static void main(String[] args) {
// TODO Auto-generated method stub
n=sc.nextInt();
m=sc.nextInt();
ch=new long[n+2];
for(int i=0;i<n;i++) {
ch[i]=sc.nextLong();
}
long ans=0;
for(int i=0;i<n-2;i++) {
int index=BinarySearch(i,ch[i]+m);
if((index-i)>=2) {
long b=index-i-1;
ans+=b*(1+b)/2;
}
}
System.out.println(ans);
}
private static int BinarySearch(int a,long key) {
// TODO Auto-generated method stub
int l=a;
int r=n-1;
int mid=(l+r)/2;
while(l<=r) {
if(ch[mid]<key) {
l=mid+1;
mid=(l+r)/2;
}else if(ch[mid]>key) {
r=mid-1;
mid=(l+r)/2;
}else {
return mid;
}
}
if(key<=l)
return l;
else
return l-1;
}
}