#include <bits/stdc++.h>
using namespace std;
#define faster ios_base::sync_with_stdio(false); cin.tie(NULL)
#define Bit(mask , i) ((mask >> i) & 1)
#define fi first
#define se second
#define _LOG2(nl) 31 - __builtin_clz(nl)
#define c_bit(nl) __builtin_popcount(nl)
#define ii pair<int , pair<int , int>>
#define lii pair<long long , pair<int , int>>
#define li pair<long long , int>
#define db double
#define onBit(mask , i) (mask | (1 << i))
#define offBit(mask , i) (mask & (~(1 << i)))
const int N = 1e7 + 7;
int n = 0 , m , k , _max = 0;
int a[N];
long long ans = 0 , pre[N];
long long mul_mod(long long a , long long b , long long m){
return ((a % m) * (b % m)) % m;
}
long long Pow_Mod(long long a , long long b , long long m){
long long res = 1;
while (b){
if (b % 2 == 1){
res *= a;
res %= m;
}
b /= 2;
a *= a;
a %= m;
}
return res;
}
bool miller_test(long long a, long long s, long long d, long long n){
long long x = Pow_Mod(a, d, n);
if (x == 1 || x == n - 1) return true;
for (int i = 1; i < s; i++) {
x = mul_mod(x, x, n);
if (x == n - 1) return true;
}
return false;
}
bool isPrime(long long n){
if (n < 2) return false;
for (long long p : {2, 3, 5, 7, 11, 13, 17, 19, 23, 29})
if (n == p) return true;
else if (n % p == 0) return false;
long long d = n - 1, s = 0;
while ((d & 1) == 0) {
d >>= 1;
s++;
}
for (long long a : {2, 325, 9375, 28178, 450775, 9780504, 1795265022}){
if (a % n == 0) continue;
if (!miller_test(a, s, d, n)) return false;
}
return true;
}
void inp(){
cin >> m >> k;
for (int i = 1 ; i <= m ; ++i){
int x;
cin >> x;
if (isPrime(x)){
++n;
a[n] = x;
++pre[x];
_max = max(_max , x);
}
}
for (int i = 1 ; i <= _max ; ++i){
ans += pre[i] * (pre[i] - 1LL) / 2;
pre[i] += pre[i - 1];
}
}
void solve(){
for (int i = 1 ; i <= n ; ++i){
ans += pre[min(_max , a[i] + k)] - pre[a[i]];
}
cout << ans;
}
int main(){
if (fopen("cau2.inp" , "r")){
freopen("cau2.inp" , "r" , stdin);
freopen("cau2.out" , "w" , stdout);
}
faster;
inp();
solve();
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgZmFzdGVyIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOyBjaW4udGllKE5VTEwpCiNkZWZpbmUgQml0KG1hc2sgLCBpKSAoKG1hc2sgPj4gaSkgJiAxKQojZGVmaW5lIGZpIGZpcnN0CiNkZWZpbmUgc2Ugc2Vjb25kCiNkZWZpbmUgX0xPRzIobmwpIDMxIC0gX19idWlsdGluX2NseihubCkKI2RlZmluZSBjX2JpdChubCkgX19idWlsdGluX3BvcGNvdW50KG5sKQojZGVmaW5lIGlpIHBhaXI8aW50ICwgcGFpcjxpbnQgLCBpbnQ+PgojZGVmaW5lIGxpaSBwYWlyPGxvbmcgbG9uZyAsIHBhaXI8aW50ICwgaW50Pj4KI2RlZmluZSBsaSBwYWlyPGxvbmcgbG9uZyAsIGludD4KI2RlZmluZSBkYiBkb3VibGUKI2RlZmluZSBvbkJpdChtYXNrICwgaSkgKG1hc2sgfCAoMSA8PCBpKSkKI2RlZmluZSBvZmZCaXQobWFzayAsIGkpIChtYXNrICYgKH4oMSA8PCBpKSkpCgpjb25zdCBpbnQgTiA9IDFlNyArIDc7CmludCBuID0gMCAsIG0gLCBrICwgX21heCA9IDA7CmludCBhW05dOwpsb25nIGxvbmcgYW5zID0gMCAsIHByZVtOXTsKCmxvbmcgbG9uZyBtdWxfbW9kKGxvbmcgbG9uZyBhICwgbG9uZyBsb25nIGIgLCBsb25nIGxvbmcgbSl7CiAgICByZXR1cm4gKChhICUgbSkgKiAoYiAlIG0pKSAlIG07Cn0KCmxvbmcgbG9uZyBQb3dfTW9kKGxvbmcgbG9uZyBhICwgbG9uZyBsb25nIGIgLCBsb25nIGxvbmcgbSl7CiAgICBsb25nIGxvbmcgcmVzID0gMTsKICAgIHdoaWxlIChiKXsKICAgICAgICBpZiAoYiAlIDIgPT0gMSl7CiAgICAgICAgICAgIHJlcyAqPSBhOwogICAgICAgICAgICByZXMgJT0gbTsKICAgICAgICB9CgogICAgICAgIGIgLz0gMjsKICAgICAgICBhICo9IGE7CiAgICAgICAgYSAlPSBtOwogICAgfQogICAgcmV0dXJuIHJlczsKfQoKYm9vbCBtaWxsZXJfdGVzdChsb25nIGxvbmcgYSwgbG9uZyBsb25nIHMsIGxvbmcgbG9uZyBkLCBsb25nIGxvbmcgbil7CiAgICBsb25nIGxvbmcgeCA9IFBvd19Nb2QoYSwgZCwgbik7CiAgICBpZiAoeCA9PSAxIHx8IHggPT0gbiAtIDEpIHJldHVybiB0cnVlOwogICAgZm9yIChpbnQgaSA9IDE7IGkgPCBzOyBpKyspIHsKICAgICAgICB4ID0gbXVsX21vZCh4LCB4LCBuKTsKICAgICAgICBpZiAoeCA9PSBuIC0gMSkgcmV0dXJuIHRydWU7CiAgICB9CiAgICByZXR1cm4gZmFsc2U7Cn0KCmJvb2wgaXNQcmltZShsb25nIGxvbmcgbil7CiAgICBpZiAobiA8IDIpIHJldHVybiBmYWxzZTsKICAgIGZvciAobG9uZyBsb25nIHAgOiB7MiwgMywgNSwgNywgMTEsIDEzLCAxNywgMTksIDIzLCAyOX0pCiAgICAgICAgaWYgKG4gPT0gcCkgcmV0dXJuIHRydWU7CiAgICAgICAgZWxzZSBpZiAobiAlIHAgPT0gMCkgcmV0dXJuIGZhbHNlOwoKICAgIGxvbmcgbG9uZyBkID0gbiAtIDEsIHMgPSAwOwogICAgd2hpbGUgKChkICYgMSkgPT0gMCkgewogICAgICAgIGQgPj49IDE7CiAgICAgICAgcysrOwogICAgfQoKICAgIGZvciAobG9uZyBsb25nIGEgOiB7MiwgMzI1LCA5Mzc1LCAyODE3OCwgNDUwNzc1LCA5NzgwNTA0LCAxNzk1MjY1MDIyfSl7CiAgICAgICAgaWYgKGEgJSBuID09IDApIGNvbnRpbnVlOwogICAgICAgIGlmICghbWlsbGVyX3Rlc3QoYSwgcywgZCwgbikpIHJldHVybiBmYWxzZTsKICAgIH0KICAgIHJldHVybiB0cnVlOwp9Cgp2b2lkIGlucCgpewogICAgY2luID4+IG0gPj4gazsKICAgIGZvciAoaW50IGkgPSAxIDsgaSA8PSBtIDsgKytpKXsKICAgICAgICBpbnQgeDsKICAgICAgICBjaW4gPj4geDsKICAgICAgICBpZiAoaXNQcmltZSh4KSl7CiAgICAgICAgICAgICsrbjsKICAgICAgICAgICAgYVtuXSA9IHg7CiAgICAgICAgICAgICsrcHJlW3hdOwogICAgICAgICAgICBfbWF4ID0gbWF4KF9tYXggLCB4KTsKICAgICAgICB9CiAgICB9CiAgICBmb3IgKGludCBpID0gMSA7IGkgPD0gX21heCA7ICsraSl7CiAgICAgICAgYW5zICs9IHByZVtpXSAqIChwcmVbaV0gLSAxTEwpIC8gMjsKICAgICAgICBwcmVbaV0gKz0gcHJlW2kgLSAxXTsKICAgIH0KfQoKdm9pZCBzb2x2ZSgpewogICAgZm9yIChpbnQgaSA9IDEgOyBpIDw9IG4gOyArK2kpewogICAgICAgIGFucyArPSBwcmVbbWluKF9tYXggLCBhW2ldICsgayldIC0gcHJlW2FbaV1dOwogICAgfQogICAgY291dCA8PCBhbnM7Cn0KCgppbnQgbWFpbigpewogICAgaWYgKGZvcGVuKCJjYXUyLmlucCIgLCAiciIpKXsKICAgICAgICBmcmVvcGVuKCJjYXUyLmlucCIgLCAiciIgLCBzdGRpbik7CiAgICAgICAgZnJlb3BlbigiY2F1Mi5vdXQiICwgInciICwgc3Rkb3V0KTsKICAgIH0KICAgIGZhc3RlcjsKICAgIGlucCgpOwogICAgc29sdmUoKTsKICAgIHJldHVybiAwOwp9Cg==