#include <bits/stdc++.h>
using namespace std;
const int maxN = 5e4 + 1;
const int base = 1e9 + 7;
const int maxX = 101;
int N, B, K, X;
long long a[maxX][maxX], b[maxX][maxX], c[maxX][maxX];
int d[maxN];
void enter() {
  cin >> N >> B >> K >> X;
  int v;
  for (int i = 1; i <= N; i++) {
    cin >> v;
    d[v]++;
  }
}
long long power(int x) {
  for (int i = 0; i < X; i++) b[i][i] = 1;
  while (x > 0) {
    if (x & 1) {
      for (int i = 0; i < X; i++) {
        for (int j = 0; j < X; j++) {
          c[i][j] = 0;
          for (int k = 0; k < X; k++)
            c[i][j] = (c[i][j] + a[i][k] * b[k][j]) % base;
        }
      }
      for (int i = 0; i < X; i++)
        for (int j = 0; j < X; j++) b[i][j] = c[i][j];
      x--;
    } else {
      for (int i = 0; i < X; i++) {
        for (int j = 0; j < X; j++) {
          c[i][j] = 0;
          for (int k = 0; k < X; k++)
            c[i][j] = (c[i][j] + a[i][k] * a[k][j]) % base;
        }
      }
      for (int i = 0; i < X; i++)
        for (int j = 0; j < X; j++) a[i][j] = c[i][j];
      x >>= 1;
    }
  }
  return b[0][K];
}
void process() {
  for (int i = 0; i < X; i++) {
    for (int j = 1; j <= 9; j++) {
      a[i][(i * 10 + j) % X] += d[j];
    }
  }
  cout << power(B);
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  enter();
  process();
  return 0;
}
