#include <bits/stdc++.h>
const int N = 100005;
using namespace std;
long long n, a, b, k;
char s[N];
long long mod = 1e9 + 9;
long long pow(long long a, long long b) {
  long long ans = 1;
  while (b) {
    if (b & 1) ans = ans * a % mod;
    b >>= 1;
    a = a * a % mod;
  }
  return ans;
}
long long ex_gcd(long long a, long long b, long long &x, long long &y) {
  if (!b) {
    x = 1, y = 0;
    return a;
  }
  long long tmp = ex_gcd(b, a % b, x, y);
  long long t = x;
  x = y;
  y = t - (a / b) * x;
  return tmp;
}
long long inv(long long x) {
  long long a, b;
  ex_gcd(x, mod, a, b);
  return (a + mod) % mod;
}
int main() {
  scanf("%lld%lld%lld%lld", &n, &a, &b, &k);
  scanf("%s", s);
  long long ans = 0, m = (n + 1) / k;
  for (int i = 0; i < k; i++) {
    long long x = pow(a, n - i), y = pow(b, i);
    long long now = x * y % mod;
    if (s[i] == '+')
      ans += now;
    else
      ans -= now;
    ans = (ans + mod) % mod;
  }
  long long q = pow(inv(a), k) * pow(b, k) % mod;
  if (q == 1)
    ans = ans * m % mod;
  else {
    long long x = inv(q - 1) % mod;
    ans = (ans * (pow(q, m) - 1) % mod) * x % mod;
  }
  ans = (ans + mod) % mod;
  printf("%lld\n", ans);
  return 0;
}
