#include <bits/stdc++.h>
using namespace std;
ifstream fin("oite.in");
ofstream fout("oite.out");
const int MAXN = 1 << 10;
const int mod = 196613;
const int MASK = (1 << 27) - 1;
int a[1 + MAXN];
vector<pair<int, int>> hash_table[mod];
bitset<1 + MASK> filter;
void add(int x) {
int key = x % mod;
for (auto &it : hash_table[key]) {
if (it.first == x) {
++it.second;
return;
}
}
hash_table[key].emplace_back(x, 1);
filter[x & MASK] = true;
}
int find_freq(int x) {
if (filter[x & MASK] == false) {
return false;
}
int key = x % mod;
for (auto it : hash_table[key]) {
if (it.first == x) {
return it.second;
}
}
return 0;
}
void test_case() {
int n, target;
fin >> n >> target;
for (int i = 1; i <= n; ++i) {
fin >> a[i];
}
sort(a + 1, a + n + 1);
int64_t ans = 0;
for (int i = 1; i <= n - 1; ++i) {
for (int j = i + 1; j <= n; ++j) {
if (target - a[i] - a[j] < 0) {
break;
}
ans += find_freq(target - a[i] - a[j]);
}
for (int j = 1; j <= i - 1; ++j) {
add(a[j] + a[i]);
}
}
fout << ans << '\n';
}
int main(){
int t = 1;
for (int tc = 1; tc <= t; ++tc) {
test_case();
}
fin.close();
fout.close();
return 0;
}