#include <bits/stdc++.h>
using namespace std;
const int maxn = 100005;
const long long mod = 1e9 + 9;
long long n, a, b, K, ab, down, AB;
char s[maxn];
inline long long ksm(long long x, long long n) {
  long long ret = 1;
  while (n) {
    if (n & 1) ret = ret * x % mod;
    n >>= 1;
    x = x * x % mod;
  }
  return ret;
}
inline long long get(int x) {
  long long cnt = n / K + (x < n % K);
  if (ab == 1) return cnt * ksm(AB, x) % mod;
  return ksm(AB, x) * ((ksm(ab, cnt) - 1 + mod + mod) % mod) % mod * down % mod;
}
int main() {
  cin >> n >> a >> b >> K;
  ++n;
  AB = b * ksm(a, mod - 2) % mod;
  ab = ksm(AB, K);
  down = ksm((ab - 1 + mod) % mod, mod - 2);
  scanf("%s", s);
  long long res = 0;
  for (int i = 0; i < K; ++i) {
    long long tmp = get(i);
    if (s[i] == '+')
      res = (res + tmp) % mod;
    else
      res = ((res - tmp) % mod + mod) % mod;
  }
  return cout << ksm(a, n - 1) * res % mod, 0;
}
