#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5 + 19;
const long long P = 1e9 + 9;
char s[maxn];
template <typename T>
void get(T &x) {
  x = 0;
  char c = getchar();
  for (; c < '0' || c > '9'; c = getchar())
    ;
  for (; c >= '0' && c <= '9'; c = getchar()) x = x * 10 + c - '0';
}
template <typename T1, typename T2>
T1 power(T1 a, T2 b) {
  T1 ans = 1;
  for (; b; b >>= 1) {
    if (b & 1) ans = ans * a % P;
    a = a * a % P;
  }
  return ans;
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  long long n, a, b, k;
  cin >> n >> a >> b >> k;
  n += 1;
  cin >> s;
  long long a_n = power(a, n - 1), inva = power(a, P - 2), c = b * inva % P,
            sum = 0, ans = 0;
  long long tmp = 1;
  for (int i = 0; i < k; ++i) {
    if (s[i] == '+')
      sum = (sum + tmp) % P;
    else
      sum = (sum - tmp + P) % P;
    tmp = tmp * c % P;
  }
  long long ttmp = 1;
  if (n / k <= 1e6) {
    int tag = n / k;
    for (int i = 0; i < tag; ++i) {
      ans = (ans + sum) % P;
      sum = sum * tmp % P;
    }
  } else {
    int tag = sqrt(n / k), res = (n / k) % tag, tm = (n / k) / tag;
    long long tans = 0, tttmp = tmp, tsum = sum;
    for (int i = 0; i < tag; ++i) {
      tans = (tans + sum) % P;
      sum = sum * tmp % P;
      ttmp = ttmp * tmp % P;
    }
    for (int i = 0; i < tm; ++i) {
      ans = (ans + tans) % P;
      tans = tans * ttmp % P;
    }
    for (int i = (n / k) - res; i < n / k; ++i)
      ans = (ans + tsum * power(tmp, i) % P) % P;
  }
  cout << ans * a_n % P << endl;
  return 0;
}
