#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MAX1 =10;
const int MAX2 = 1e5;
const ll MOD = 1e9 + 7;
vector<pair<int, ll> > items;
ll n, m, l;
ll dp[MAX1 +1][MAX2 +1][MAX1 + 1];
ll nCr(ll n, ll k )
{
if(k == 0 || k == n)
return 1LL;
return (nCr(n-1, k-1) + nCr(n -1, k))%MOD;
}
ll count(ll idx , ll rem , ll cost)
{
if(idx == l)
return ( (rem==0) && ((cost%m) ==0));
if(rem == 0)
return ( cost%m == 0);
if(dp[idx][rem][cost%m] != -1)
return dp[idx][rem][cost%m];
ll ans = 0;
for(ll j = 0; j<= rem; j++)
{
ans += (count(idx +1 , rem -j, (cost%m + (j *items[idx].first)%m)%m));
}
return dp[idx][rem][cost%m] = ans;
}
int main()
{
cin>>n>>m>>l;
map<int , ll> m;
for(int i = 0; i<l ; i++)
{
int v;
cin>>v;
m[v]++;
}
memset(dp, -1, sizeof(dp));
cout<<count(0LL, (ll)n, 0LL)<<"\n";
}