#include <iostream>
#include<bits/stdc++.h>
using namespace std;


// leetcode 323

int threeSumMulti(vector<int>& nums, int target) {
        int cnt = 0;
        int mod=1e9+7;
          unordered_map<int, int> mpp;


        for (int k = 2; k < nums.size(); k++) {
            int x = target - nums[k];
          

            for (int j = 0; j < k; j++) {
                int find = x - nums[j];
                if (mpp.count(find)) {
                    cnt = (cnt + mpp[find])%mod;
                    

                }
                mpp[nums[j]]++;

            }
            mpp.clear();
            
        }
        return cnt;
    }



int main() {
	int n,target;
	cin>>n>>target;
	vector<int> nums(n);
	for(int i=0;i<n;i++){
		cin>>nums[i];
	}
	
	int a = threeSumMulti(nums,target);
	cout<<a;
	
	
	return 0;
}