// author : Nguyễn Trọng Nguyễn - ITK22 NBK
#include <bits/stdc++.h>
using namespace std;
const int maxn = (int)1e6;
typedef long long ll;
const ll INF = (int)1e18;
int n;
int a[maxn + 5];
ll k;
void Gentest () {
srand(time(NULL));
n = rand() % (int)5e3;
k = rand() % INF;
for (int i = 1; i <= n; i++) {
int t = rand() % 2;
a[i] = rand() % (int)1e9;
if (t == 0) a[i] = -a[i];
}
}
namespace SUBTASK1 {
ll cnt = 0;
void Sub1 () {
for (int i = 1; i <= n; i++)
for (int j = i + 1; j <= n; j++)
if (abs(a[i] + a[j]) == k)
cnt++;
cout << cnt << '\n';
}
}
namespace SUBTASK2 {
ll cnt = 0;
ll get (int t, int i) {
int l = lower_bound(a + 1, a + 1 + n, t - a[i]) - a;
int r = upper_bound(a + 1, a + 1 + n, t - a[i]) - a;
return r - l;
}
void Sub2 () {
sort(a + 1, a + 1 + n);
for (int i = 1; i <= n; i++)
cnt += get(k, i) + get(-k, i);
cout << cnt / 2;
}
}
signed main () {
cin.tie(0)->sync_with_stdio(false);
#ifndef ONLINE_JUDGE
freopen("main.inp","r",stdin);
freopen("main.out","w",stdout);
#endif
cin >> n >> k;
for (int i = 1; i <= n; i++) cin >> a[i];
Gentest();
if (n <= (int)5e3) SUBTASK1 :: Sub1();
else SUBTASK2 :: Sub2();
return 0;
}
Ly8gYXV0aG9yIDogTmd1eeG7hW4gVHLhu41uZyBOZ3V54buFbiAtIElUSzIyIE5CSwojaW5jbHVkZSA8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNvbnN0IGludCBtYXhuID0gKGludCkxZTY7CnR5cGVkZWYgbG9uZyBsb25nIGxsOwpjb25zdCBsbCBJTkYgPSAoaW50KTFlMTg7CgppbnQgbjsKaW50IGFbbWF4biArIDVdOwpsbCBrOwoKdm9pZCBHZW50ZXN0ICgpIHsKCXNyYW5kKHRpbWUoTlVMTCkpOwoKCW4gPSByYW5kKCkgJSAoaW50KTVlMzsKCWsgPSByYW5kKCkgJSBJTkY7CgoJZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSB7CgkJaW50IHQgPSByYW5kKCkgJSAyOwoJCWFbaV0gPSByYW5kKCkgJSAoaW50KTFlOTsKCQlpZiAodCA9PSAwKSBhW2ldID0gLWFbaV07Cgl9Cn0KCm5hbWVzcGFjZSBTVUJUQVNLMSB7CglsbCBjbnQgPSAwOwoKCXZvaWQgU3ViMSAoKSB7CgkJZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSAKCQkJZm9yIChpbnQgaiA9IGkgKyAxOyBqIDw9IG47IGorKykgCgkJCQlpZiAoYWJzKGFbaV0gKyBhW2pdKSA9PSBrKSAKCQkJCQljbnQrKzsKCgkJY291dCA8PCBjbnQgPDwgJ1xuJzsKCX0KfQoKbmFtZXNwYWNlIFNVQlRBU0syIHsKCWxsIGNudCA9IDA7CgoJbGwgZ2V0IChpbnQgdCwgaW50IGkpIHsKCQlpbnQgbCA9IGxvd2VyX2JvdW5kKGEgKyAxLCBhICsgMSArIG4sIHQgLSBhW2ldKSAtIGE7CgkJaW50IHIgPSB1cHBlcl9ib3VuZChhICsgMSwgYSArIDEgKyBuLCB0IC0gYVtpXSkgLSBhOwoKCQlyZXR1cm4gciAtIGw7Cgl9CgoJdm9pZCBTdWIyICgpIHsKCQlzb3J0KGEgKyAxLCBhICsgMSArIG4pOwoKCQlmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIAoJCQljbnQgKz0gZ2V0KGssIGkpICsgZ2V0KC1rLCBpKTsKCgkJY291dCA8PCBjbnQgLyAyOwoJfQp9CgpzaWduZWQgbWFpbiAoKSB7CgljaW4udGllKDApLT5zeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwoJCgkjaWZuZGVmIE9OTElORV9KVURHRQoJZnJlb3BlbigibWFpbi5pbnAiLCJyIixzdGRpbik7CglmcmVvcGVuKCJtYWluLm91dCIsInciLHN0ZG91dCk7CgkjZW5kaWYKCgljaW4gPj4gbiA+PiBrOwoJZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSBjaW4gPj4gYVtpXTsKCglHZW50ZXN0KCk7CgoJaWYgKG4gPD0gKGludCk1ZTMpIFNVQlRBU0sxIDo6IFN1YjEoKTsKCWVsc2UgU1VCVEFTSzIgOjogU3ViMigpOwoKCXJldHVybiAwOwp9Cg==