//teja349 #include #include #include #include #include #include #include #include #include #include #include #include #include #include //setbase - cout << setbase (16); cout << 100 << endl; Prints 64 //setfill - cout << setfill ('x') << setw (5); cout << 77 << endl; prints xxx77 //setprecision - cout << setprecision (14) << f << endl; Prints x.xxxx //cout.precision(x) cout<=b;i--) #define pb push_back #define mp make_pair #define vi vector< int > #define vl vector< ll > #define ss second #define ff first #define ll long long #define pii pair< int,int > #define pll pair< ll,ll > #define sz(a) a.size() #define inf (1000*1000*1000+5) #define all(a) a.begin(),a.end() #define tri pair #define vii vector #define vll vector #define viii vector #define mod (1000*1000*1000+7) #define pqueue priority_queue< int > #define pdqueue priority_queue< int,vi ,greater< int > > #define flush fflush(stdout) #define primeDEN 727999983 mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); #define int ll ll inv[100003],mult[100003],invmult[100003]; ll gcd(ll a,ll b){ while(b!=0){ a=a%b; swap(a,b); } return a; } ll extend_gcd(ll a,ll b,ll &x,ll &y){ if(b==0){ x=1; y=0; return a; } ll x1,y1; ll ans =extend_gcd(b,a%b,x1,y1); x=y1; y=x1-(a/b)*y1; return ans; } ll combination(ll n,ll r){ if(r==0) return 1; if(n0) inv[i]=y%mod; else{ inv[i]=(y+mod)%mod; } } mult[0]=1; f(i,1,100001){ mult[i]=mult[i-1]*i; mult[i]%=mod; } invmult[0]=1; f(i,1,100001){ invmult[i]=invmult[i-1]*inv[i]; invmult[i]%=mod; } return 0; } int extra=0; int cnt[123],gg[123]; int ans=0; int calc(){ int i,j,boo=0; rep(i,51){ cnt[i]+=gg[i]; } rep(i,51){ f(j,i,51){ if(i==j){ boo+=(i+1)*(cnt[i]-1)*cnt[i]/2; } else{ boo+=__gcd(i+1,j+1)*cnt[i]*cnt[j]; } } } boo%=mod; int gee=0; rep(i,51){ boo*=combination(extra-gee,cnt[i]-gg[i]); gee+=cnt[i]-gg[i]; boo%=mod; } ans+=boo; ans%=mod; rep(i,51){ cnt[i]-=gg[i]; } return 0; } int compute(int n,int s,int val){ //cout<s){ break; } fd(j,val-1,-1){ compute(n-cnt[val],s-cnt[val]*val,j); } } cnt[val]=0; return 0; } int a[123]; signed main(){ std::ios::sync_with_stdio(false); cin.tie(NULL); int t; cin>>t; initcombi(); while(t--){ int n,s; cin>>n>>s; int i; extra=0; ans=0; rep(i,52){ cnt[i]=0; gg[i]=0; } rep(i,n){ cin>>a[i]; if(a[i]==-1){ extra++; continue; } a[i]--; gg[a[i]]++; s-=a[i]; } s-=n; if(s<0){ cout<<0<