#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define dd double
#define ld long double
#define pi 3.14159265359
#define ull unsigned long long
#define yes cout<<"YES\n"
#define no cout<<"NO\n"
#define el "\n"
#define Arwa ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define fix(x) cout<<fixed<<setprecision(x)
ll gcd(ll a,ll b) {return b==0?a:gcd(b,a%b);}
ll lcm(int a,int b) {return a/gcd(a,b)*b;}
bool prime(ll n)
{
	if(n==2) return true;
	if(n%2==0||n==1) return false;
	else { for(ll i=3; i*i<=n; i+=2) {if(n%i==0) return false;}}return true;
}
//here we go again
int main()
{
    Arwa
    int t=1;
    //cin>>t;
    while(t--)
    {
     int n,k,neg[1000001]={},pos[1000001]={};
     ll c=0;
     cin>>n>>k;
     int arr[n];
     for(int i=0;i<n;i++)
     cin>>arr[i];
     for(int i=0;i<n;i++)
     {
         if(arr[i]<0)
         neg[abs(arr[i])]++;
         else pos[arr[i]]++;
     }
     for(int i=0;i<n;i++)
     {
        if(neg[abs(arr[i])]&&arr[i]<0)
        {
           if(pos[k-arr[i]]&&k-arr[i]>=0) 
           {
           c+=pos[k-arr[i]];
           neg[abs(arr[i])]--;
           }
           if(neg[k-arr[i]]&&k-arr[i]<0) 
           {
            c+=neg[abs(k-arr[i])];
            neg[abs(arr[i])]--;
           }
        }
        if(pos[arr[i]]&&arr[i]>=0)
           {
           if(pos[k-arr[i]]&&k-arr[i]>=0) 
           {
           c+=pos[k-arr[i]];
           pos[arr[i]]--;
           }
           if(neg[abs(k-arr[i])]&&k-arr[i]<0) 
           {
            c+=neg[abs(k-arr[i])];
            pos[arr[i]]--;
           }
           }
        }
     cout<<c<<el;
    }
    return 0;
}