#include <bits/stdc++.h>
using namespace std;
void gun(int n, long long ara1[105][105], long long ara2[105][105]) {
  int i, j, k;
  long long temp[105];
  for (i = 0; i < n; i++) {
    for (j = 0; j < n; j++) {
      temp[j] = 0;
      for (k = 0; k < n; k++) {
        temp[j] += (ara1[i][k] * ara2[k][j]);
        temp[j] %= 1000000007;
      }
    }
    for (j = 0; j < n; j++) ara1[i][j] = temp[j];
  }
  return;
}
void power(int n, long long ara1[105][105], int p) {
  int i, j;
  if (p == 0) {
    for (i = 0; i < n; i++) {
      for (j = 0; j < n; j++) {
        ara1[i][j] = 0;
        if (i == j) ara1[i][j] = 1;
      }
    }
    return;
  }
  long long tempo[105][105];
  if (!(p & 1)) {
    power(n, ara1, p >> 1);
    for (i = 0; i < n; i++)
      for (j = 0; j < n; j++) tempo[i][j] = ara1[i][j];
    gun(n, ara1, tempo);
    return;
  }
  for (i = 0; i < n; i++)
    for (j = 0; j < n; j++) tempo[i][j] = ara1[i][j];
  power(n, ara1, p - 1);
  gun(n, ara1, tempo);
  return;
}
long long cnt[105];
int main() {
  int n, b, k, x, i, j;
  scanf("%d", &n);
  scanf("%d", &b);
  scanf("%d", &k);
  scanf("%d", &x);
  for (i = 0; i < n; i++) {
    int p;
    scanf("%d", &p);
    cnt[p % x]++;
  }
  long long ara[105][105];
  memset(ara, 0, sizeof(ara));
  for (i = 0; i < x; i++) {
    for (j = 0; j < x; j++) {
      for (int p = 0; p < 10; p++) {
        if (j == (10 * i + p) % x) ara[i][j] += cnt[p];
      }
    }
  }
  power(x, ara, b - 1);
  long long ans = 0;
  for (i = 0; i < x; i++) {
    ans += (cnt[i] * ara[i][k]);
    ans %= 1000000007;
  }
  cout << ans << endl;
  return 0;
}
