/* * Date: * 2015/09/19 * Author: * Indestinee */ #include #include #include #include #include #include #include #include #include #include using namespace std; string _in = "data"; string _out = "data"; int cas, n, p, a, dp[1002][1002]; const int mod = 1e9+7; int main(){ // freopen( ( _in + ".in" ).c_str() , "r" , stdin ); // freopen( ( _out + ".out" ).c_str() , "w" , stdout ); scanf( "%d" , &cas ); for( int T = 1 ; T <= cas ; T ++ ){ scanf( "%d %d" , &n , &p ); memset( dp , 0 , sizeof( dp ) ); dp[0][0] = 1; for( int i = 1 ; i <= n ; i ++ ){ scanf( "%d" , &a ); a %= p; if( a < 0 ) a += p; for( int j = 0 ; j < p ; j ++ ){ dp[i][(j+a)%p] += dp[i-1][j]; if( dp[i][(j+a)%p] >= mod ) dp[i][(j+a)%p] -= mod; dp[i][j] += dp[i-1][j]; if( dp[i][j] >= mod ) dp[i][j] -= mod; } } printf( "%d\n" , dp[n][0] ); } return 0; }