#include <algorithm>
#include <unordered_map>
#include <unordered_set>
#include <fstream>
#define DMAX 2000
using namespace std;
ifstream fin ("oite.in");
ofstream fout ("oite.out");
unordered_multiset <int> mySet;
int C, L;
long long sol;
int vals[DMAX];
int main()
{
fin >> C >> L;
for (int i = 1; i <= C; ++i)
fin >> vals[i];
//sort (vals+1, vals+C+1);
for (int i = 1; i < C; ++i){
for (int j = i+1; j <= C; ++j)
sol+=mySet.count (L-vals[i]-vals[j]);
for (int j = 1; j < i; ++j)
mySet.insert(vals[i]+vals[j]);
}
fout<<sol<<'\n';
}