#include <bits/stdc++.h>
using namespace std;
using uint = unsigned int;
using ll = long long;
using pii = pair<int, int>;
using vi = vector<int>;
int read() {
  int i;
  scanf("%d", &i);
  return i;
}
const int mod = 1000000007;
void Add(int& a, ll b) { a = (ll(a) + b) % mod; }
int x;
ll modPow(ll a, ll p) {
  ll s = 1;
  for (int i = 0; i < 30; i++) {
    if ((p >> i) & 1) s = s * a % x;
    a = a * a % x;
  }
  return s;
}
vi kake(const vi& src, ll v) {
  vi ret(x, 0);
  for (int i = 0; i < x; i++) Add(ret[(i * v) % x], src[i]);
  return ret;
}
vi conv(const vi& a, const vi& b) {
  vi ret(x, 0);
  for (int i = 0; i < x; i++)
    for (int j = 0; j < x; j++) Add(ret[(i + j) % x], ll(a[i]) * b[j]);
  return ret;
}
int main() {
  int n = read(), b = read(), k = read();
  x = read();
  vi s(x, 0);
  for (int i = 0; i < n; i++) s[read() % x]++;
  vi ans(x, 0);
  ans[0] = 1;
  for (int i = 0; i < 30; i++) {
    if ((b >> i) & 1) ans = conv(kake(ans, modPow(10, (1 << i))), s);
    s = conv(kake(s, modPow(10, (1 << i))), s);
  }
  cout << ans[k] << endl;
  return 0;
}
