#include using namespace std; typedef signed long long ll; #undef _P #define _P(...) (void)printf(__VA_ARGS__) #define FOR(x,to) for(x=0;x>=1; } } void solve() { int i,j,k,l,r,x,y; string s; cin>>N>>M; FOR(i,N) cin>>A[i]; pat[0][0]=1; FOR(i,N) { for(j=0;j*A[i]<=500;j++) { for(x=0;x+j*A[i]<=500;x++) pat[i+1][x+j*A[i]]=(pat[i+1][x+j*A[i]]+pat[i][x])%mo; } } if(M<=500) return _P("%lld\n",pat[N][M]); FOR(i,N) G[0][500-A[i]]=1; FOR(x,499) G[x+1][x]=1; powmat(M-500,500,G,G2); ll ret=0; FOR(x,500) ret+=G2[0][x]*pat[N][500-x]%mo; cout<