#include <cstdio>
#include <algorithm>
#define MAXN 1024
#define MAXS 524288
#define MOD ((1<<22)-1)
struct aa{
int sum, x, y;
}val[MAXS];
int r, v[MAXN+1], lista[MOD+1], nxt[MAXS];
inline void adauga(int s, int i, int j)
{
int mod = (s&MOD);
val[++r].sum=s;
val[r].x=i;
val[r].y=j;
nxt[r]=lista[mod];
lista[mod]=r;
}
inline long long check(int s, int i, int j)
{
int mod = (s&MOD), p, ans=0;
p=lista[mod];
while(p)
{
if(val[p].sum == s && val[p].x > j && val[p].y > j)
ans++;
p=nxt[p];
}
return ans;
}
int main()
{
freopen("oite.in", "r", stdin);
freopen("oite.out", "w", stdout);
int n, i, j, l;
long long ans=0;
scanf("%d%d", &n, &l);
for(i=0;i<n;++i)
scanf("%d", &v[i]);
std::sort(v, v+n);
for(i=0;i<n-1;++i)
for(j=i+1;j<n;++j)
adauga(v[i]+v[j], i, j);
for(i=0;i<n-1;++i)
for(j=i+1;j<n;++j)
if(v[i] + v[j] <= l)
ans += check(l - (v[i] + v[j]), i, j);
printf("%lld", ans);
return 0;
}