#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int,int> PII;
typedef pair<double,double> PDD;
typedef vector<int> VI;
const int mod = 1e8;
int n,m,t;
int f;
int v[2010];
int w[1010];
int s[1010][1010];
int h[250001];
int dp[2010][1010];
//枚举余数
vector< int > q[100];
int main(){
cin>>n>>f;
for(int i=1;i<=n;i++){
cin>>v[i];
v[i] %= f;
dp[i][v[i]] = 1;
}
for(int i=1;i<=n;i++){
for(int j=0;j<f;j++){
//m = v[i] % f;
dp[i][j] = (dp[i][j] + dp[i-1][j] + dp[i-1][(j-v[i]+f) % f]) % mod;
}
}
cout<<dp[n][0];
}
整除的问题从余数的角度考虑
(x+ v )% p = j ---> x = (j-v+p) % p