#include <bits/stdc++.h>
using namespace std;
const int P = 1000000007;
const int maxn = 130;
int n, A[maxn];
namespace Ninit {
void init() {
  int t, x;
  scanf("%*d%d%d", &n, &t);
  for (; t--;) scanf("%d", &x), x %= n, ++A[min(x, n - x)];
}
}  // namespace Ninit
namespace Nsolve {
int ans;
void dfs(int x, bitset<maxn> S, int k) {
  if (x > n / 2) return ans = (ans + k) % P, void();
  dfs(x + 1, S, k);
  if (A[x] && !S[x])
    dfs(x + 1, S | (S >> x) | (S << n - x) | (S << x) | (S >> n - x),
        (long long)k * A[x] % P);
}
void solve() {
  dfs(0, bitset<maxn>(1), 1);
  cout << ans << endl;
}
}  // namespace Nsolve
int main() {
  Ninit::init();
  Nsolve::solve();
  return 0;
}
