#include #include #include #include #include #include #include #include #include #include #include #include #pragma comment(linker,"/STACK:102400000,102400000") using namespace std; int a[1005]; __int64 dp[1005][2],mod=1e9+7; int main(){ int i,j,n,m,T,p,now,pre; scanf("%d",&T); while(T--){ memset(dp,0,sizeof(dp)); scanf("%d%d",&n,&p); for(i=1;i<=n;i++){ scanf("%d",&a[i]); a[i]%=p; a[i]=(a[i]+p)%p; } now=0,pre=1; dp[0][pre]=1; for(i=1;i<=n;i++){ for(j=0;j=mod) dp[j][now]-=mod; int et=(j+a[i]); if(et>=p) et-=p; dp[et][now]+=dp[j][pre]; if(dp[et][now]>=mod) dp[et][now]-=mod; } now^=1; pre^=1; } printf("%I64d\n",dp[0][pre]); } return 0; }