#include <bits/stdc++.h>
using namespace std;
const long long MOD = 1e9 + 9;
priority_queue<int, vector<int>, greater<int> > pq;
vector<int> v;
queue<int> q;
deque<int> dq;
char s[100001];
long long modulo(long long a, long long b, long long mod) {
  long long sum = 1;
  while (b) {
    if (b % 2) sum = sum * a % mod;
    a = a * a % mod;
    b /= 2;
  }
  return sum;
}
int main() {
  int n, a, b, k;
  long long st, sum = 0, am, ans = 0, t;
  scanf("%d %d %d %d", &n, &a, &b, &k);
  scanf("%s", s);
  st = modulo(a, n, MOD);
  am = modulo(a, MOD - 2, MOD);
  for (int i = 0; i < k; i++) {
    sum = (sum + st * (s[i] == '-' ? -1 : 1)) % MOD;
    if (sum < 0) sum += MOD;
    st = (st * b) % MOD;
    st = (st * am) % MOD;
  }
  t = (n + 1) / k;
  long long bb = modulo(b, k, MOD), aa = modulo(a, k, MOD);
  long long bbb = modulo(bb, t, MOD), aaa = modulo(aa, t, MOD),
            aam = modulo(aa, MOD - 2, MOD);
  aaa = modulo(aaa, MOD - 2, MOD);
  if (t) {
    long long tt, ttt;
    tt = (bbb * aaa - 1) % MOD;
    ttt = (bb * aam - 1) % MOD;
    if (tt < 0) tt += MOD;
    if (ttt < 0) ttt += MOD;
    ttt = modulo(ttt, MOD - 2, MOD);
    if (!ttt)
      ans = sum * (n + 1) / k % MOD;
    else
      ans = sum * tt % MOD * ttt % MOD;
    if (ans < 0) ans += MOD;
  }
  t = k * ((n + 1) / k);
  st = modulo(a, n - t, MOD);
  st = st * modulo(b, t, MOD) % MOD;
  for (int i = k * ((n + 1) / k); i < n + 1; i++) {
    ans = (ans + st * (s[i % k] == '-' ? -1 : 1)) % MOD;
    if (ans < 0) ans += MOD;
    st = (st * b) % MOD;
    st = (st * am) % MOD;
  }
  printf("%lld", ans);
}
