#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define LL long long #define INF 0x3f3f3f3f #define MOD 1000000007 #define eps 1e-6 #define MAXN 1010 #define MAXM 100 #define dd {cout<<"debug"<= l; i --) #define doe(i, x) for(i = 1; i <= x; i ++) int n, p; int f[MAXN]; LL dp[MAXN][MAXN]; void show(int pos) { for(int i = p; i >= 0; i --) printf("%d ", dp[pos][i]); printf("\n"); } int main() { int T; scanf("%d", &T); while(T --) { scanf("%d %d", &n, &p); for(int i = 0; i < n; i ++) { scanf("%d", &f[i]); f[i] = (f[i] % p + p) % p; } memset(dp, 0, sizeof(dp)); dp[0][0] = 1; for(int i = 0; i < n; i ++) for(int j = 0; j < p; j ++) { dp[i + 1][j] += dp[i][j]; dp[i + 1][j] %= MOD; dp[i + 1][(j + f[i]) % p] += dp[i][j]; dp[i + 1][(j + f[i]) % p] %= MOD; } printf("%I64d\n", dp[n][0]); } return 0; }