Lang:G++
Edit12345678910111213141516171819202122#include <bits/stdc++.h>using namespace std;const int maxn=100010,MOD=1000000007;typedef long long ll;int a[maxn];int quick_pow(ll a,ll b){ll ans=1;for(;b;a=(a*a)%MOD,b>>=1)if(b&1)ans=(ans*a)%MOD;return ans;}int main(){int n,k,ans=0;scanf("%d%d",&n,&k);for(int i=1;i<=n;i++)scanf("%d",&a[i]);sort(a+1,a+n+1);for(int l=1,r=n;l<=n;l++){while(l<=r&&a[l]+a[r]>k)r--;if(l<=r)ans=(ans+quick_pow(2,r-l))%MOD;}cout<<ans<<endl;return 0;}