#include <fstream>
#include <unordered_map>
#include <algorithm>
using namespace std;
ifstream fin("oite.in");
ofstream fout("oite.out");
int C, L, v[2000], result = 0, i, j, suma;
unordered_map<int, int> grupoite;
int main() {
fin >> C >> L;
for(i = 0; i < C; ++i){
fin >> v[i];
}
sort(v, v + C);
for(i = 0; i < C; ++i){
for(j = i + 1; j < C; ++j){
suma = v[i] + v[j];
if(grupoite.find(L - suma) != grupoite.end()){
result += grupoite[L - suma];
}
}
for(j = 0; j < i; ++j)
++grupoite[v[i] + v[j]];
}
fout << result;
return 0;
}