#include <bits/stdc++.h>
using namespace std;
long long n, b, k, x;
long long a[50009];
long long S[200];
long long X[200][200][200];
long long ans[200][200];
long long Y[200][200];
long long r;
long long mod = 1e9 + 7;
int main() {
  ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
  cin >> n >> b >> k >> x;
  S[0] = 1;
  for (int i = 0; i < n; i++) {
    cin >> a[i];
  }
  for (int i = 0; i < x; i++) {
    for (int o = 0; o < n; o++) {
      X[0][i][(i * 10 + a[o]) % x]++;
    }
  }
  for (int ii = 1; ii < 104; ii++) {
    for (int i = 0; i < x; i++) {
      for (int o = 0; o < x; o++) {
        for (int p = 0; p < x; p++) {
          X[ii][i][o] += X[ii - 1][i][p] * X[ii - 1][p][o];
          X[ii][i][o] %= mod;
        }
      }
    }
  }
  int u = 0;
  for (int i = 100; i >= 0; i--) {
    if (pow(2, i) > b) {
      continue;
    }
    b -= pow(2, i);
    if (u == 0) {
      for (int o = 0; o < x; o++) {
        for (int p = 0; p < x; p++) {
          ans[o][p] = X[i][o][p];
        }
      }
      u = 1;
      continue;
    }
    for (int o = 0; o < x; o++) {
      for (int p = 0; p < x; p++) {
        Y[o][p] = 0;
      }
    }
    for (int o = 0; o < x; o++) {
      for (int p = 0; p < x; p++) {
        for (int q = 0; q < x; q++) {
          Y[o][p] += ans[o][q] * X[i][q][p];
          Y[o][p] %= mod;
        }
      }
    }
    for (int o = 0; o < x; o++) {
      for (int p = 0; p < x; p++) {
        ans[o][p] = Y[o][p];
      }
    }
  }
  cout << ans[0][k] << endl;
}
