#include <bits/stdc++.h>
using namespace std;
map<int, int> m;
long long int mat[102][102], mat1[102][102];
int mod;
void multiply(long long int m1[102][102], long long int m2[102][102]) {
  int i, j, k;
  long long int res[102][102] = {0};
  for (i = 0; i < mod; i++)
    for (j = 0; j < mod; j++)
      for (k = 0; k < mod; k++)
        res[i][j] = (res[i][j] + m1[i][k] * m2[k][j]) % 1000000007;
  for (i = 0; i < mod; i++)
    for (j = 0; j < mod; j++) {
      m1[i][j] = res[i][j];
    }
}
void power(int y) {
  if (y == 1) return;
  power(y / 2);
  multiply(mat, mat);
  if (y & 1) multiply(mat, mat1);
}
int main() {
  int i, j, n, b, k;
  scanf("%d%d", &n, &b);
  ;
  scanf("%d%d", &k, &mod);
  ;
  for (i = 0; i < n; i++) {
    int x;
    scanf("%d", &x);
    ;
    x = x % mod;
    m[x]++;
  }
  for (i = 0; i < mod; i++) {
    int curr = i;
    for (j = 0; j < mod; j++) {
      int curc = (i * 10 + j) % mod;
      mat[i][curc] += m[j];
      mat1[i][curc] += m[j];
    }
  }
  power(b);
  cout << mat[0][k] << endl;
  return 0;
}
