#include <bits/stdc++.h>
using namespace std;
long long int powr(long long int a, long long int n) {
  if (n == 0) return 1LL;
  if (n == 1) return a;
  if (n % 2 == 1)
    return (a * powr((a * a) % 1000000009, n / 2)) % 1000000009;
  else
    return powr((a * a) % 1000000009, n / 2);
}
char s[100005];
int main() {
  long long int n, a, b, k, tmp;
  scanf("%lld %lld %lld", &n, &a, &b);
  scanf("%lld", &k);
  scanf("%s", s);
  long long int ans = 0, m = 1;
  for (long long int i = 0; i < k; i = i + 1) {
    if (s[i] == '+')
      ans = (ans + ((powr(a, n - i) * m) % 1000000009)) % 1000000009;
    else
      ans = (ans - ((powr(a, n - i) * m) % 1000000009)) % 1000000009;
    m = (m * b) % 1000000009;
  }
  tmp = (b * powr(a, 1000000009 - 2)) % 1000000009;
  tmp = powr(tmp, k);
  if (tmp < 0) tmp += 1000000009;
  if (tmp == 1) {
    ans = (ans * ((n + 1) / k)) % 1000000009;
    if (ans < 0) ans += 1000000009;
    printf("%lld\n", ans);
    return 0;
  }
  ans = (ans * (powr(tmp, (n + 1) / k) - 1)) % 1000000009;
  ans = (ans * powr(tmp - 1, 1000000009 - 2)) % 1000000009;
  if (ans < 0) ans += 1000000009;
  printf("%lld\n", ans);
  return 0;
  ans = (ans * powr(a, k)) % 1000000009;
  ans = (ans * ((powr(b, n + 1) - powr(a, n + 1)) % 1000000009)) % 1000000009;
  tmp =
      (powr(a, n + 1) * ((powr(b, k) - powr(a, k) + 1000000009) % 1000000009)) %
      1000000009;
  if (tmp < 0) tmp += 1000000009;
  tmp = powr(tmp, 1000000009 - 2);
  ans = (ans * tmp) % 1000000009;
  if (ans < 0) ans += 1000000009;
  printf("%lld\n", ans);
  return 0;
}
