/* hng */
#include <bits/stdc++.h>
/*
#pragma GCC optimize("O3,unroll-loops")
#pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")
*/
#define fast \
ios::sync_with_stdio(false); \
cin.tie(nullptr); \
cout.tie(nullptr);
#define fi first
#define se second
#define pr pair
#define ll long long
#define ull unsigned long long
#define db double
#define vt vector
#define pb(a) push_back(a) //push_back()
#define umap unordered_map
#define ln '\n'
using namespace std;
const string NAME = "test";
const ll MAXN = 1e6 + 36;
const ll MOD = 1e9 + 7;
const ll lmin = LLONG_MIN;
const ll lmax = LLONG_MAX;
/*-------------------------------------------------------------*/
int main()
{
fast;
#ifndef ONLINE_JUDGE
freopen((NAME + ".inp").c_str(), "r", stdin);
freopen((NAME + ".out").c_str(), "w", stdout);
#endif
auto start = chrono::steady_clock::now();
ll n, k;
cin >> n >> k;
ll x;
umap<ll, ll> cnt;
ll ans = 0;
while (n--)
{
cin >> x;
ans += cnt[x];
cnt[k - x]++;
}
cout << ans;
auto end = chrono::steady_clock::now();
cerr << "Time = " << chrono::duration<double>(end - start).count() << 's';
}
LyogaG5nICovCiNpbmNsdWRlIDxiaXRzL3N0ZGMrKy5oPgovKgojcHJhZ21hIEdDQyBvcHRpbWl6ZSgiTzMsdW5yb2xsLWxvb3BzIikKI3ByYWdtYSBHQ0MgdGFyZ2V0KCJhdngyLGJtaSxibWkyLGx6Y250LHBvcGNudCIpCiovCiNkZWZpbmUgZmFzdCAgICAgICAgICAgICAgICAgICAgIFwKICAgIGlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsgXAogICAgY2luLnRpZShudWxscHRyKTsgICAgICAgICAgICBcCiAgICBjb3V0LnRpZShudWxscHRyKTsKI2RlZmluZSBmaSBmaXJzdAojZGVmaW5lIHNlIHNlY29uZAojZGVmaW5lIHByIHBhaXIKI2RlZmluZSBsbCBsb25nIGxvbmcKI2RlZmluZSB1bGwgdW5zaWduZWQgbG9uZyBsb25nCiNkZWZpbmUgZGIgZG91YmxlCiNkZWZpbmUgdnQgdmVjdG9yCiNkZWZpbmUgcGIoYSkgcHVzaF9iYWNrKGEpIC8vcHVzaF9iYWNrKCkKI2RlZmluZSB1bWFwIHVub3JkZXJlZF9tYXAKI2RlZmluZSBsbiAnXG4nCnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpjb25zdCBzdHJpbmcgTkFNRSA9ICJ0ZXN0IjsKY29uc3QgbGwgTUFYTiA9IDFlNiArIDM2Owpjb25zdCBsbCBNT0QgPSAxZTkgKyA3Owpjb25zdCBsbCBsbWluID0gTExPTkdfTUlOOwpjb25zdCBsbCBsbWF4ID0gTExPTkdfTUFYOwovKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwppbnQgbWFpbigpCnsKICAgIGZhc3Q7CgogICAgI2lmbmRlZiBPTkxJTkVfSlVER0UKICAgIGZyZW9wZW4oKE5BTUUgKyAiLmlucCIpLmNfc3RyKCksICJyIiwgc3RkaW4pOwogICAgZnJlb3BlbigoTkFNRSArICIub3V0IikuY19zdHIoKSwgInciLCBzdGRvdXQpOwogICAgI2VuZGlmCgogICAgYXV0byBzdGFydCA9IGNocm9ubzo6c3RlYWR5X2Nsb2NrOjpub3coKTsKCiAgICBsbCBuLCBrOwogICAgY2luID4+IG4gPj4gazsKCiAgICBsbCB4OwogICAgdW1hcDxsbCwgbGw+IGNudDsKICAgIGxsIGFucyA9IDA7CgogICAgd2hpbGUgKG4tLSkKICAgIHsKICAgICAgICBjaW4gPj4geDsKICAgICAgICBhbnMgKz0gY250W3hdOwogICAgICAgIGNudFtrIC0geF0rKzsKICAgIH0KICAgIAogICAgY291dCA8PCBhbnM7CgogICAgYXV0byBlbmQgPSBjaHJvbm86OnN0ZWFkeV9jbG9jazo6bm93KCk7CiAgICBjZXJyIDw8ICJUaW1lID0gIiA8PCBjaHJvbm86OmR1cmF0aW9uPGRvdWJsZT4oZW5kIC0gc3RhcnQpLmNvdW50KCkgPDwgJ3MnOwp9Cg==