#include <bits/stdc++.h>
using namespace std;
const long long md = 1000000009;
long long n, a, b, k;
string str;
long long arr[100010];
long long bigmod(long long p, long long q) {
  if (q == 0)
    return 1LL;
  else if (q == 1)
    return p % md;
  long long ret = bigmod(p, q / 2);
  ret = (ret * ret) % md;
  if (q & 1) ret = (ret * p) % md;
  return ret;
}
long long func(long long p, long long xx) {
  if (p == 0) return 1LL;
  if (p == 1) {
    return (bigmod(a, ((p + 1) / 2) * xx) + bigmod(b, ((p + 1) / 2) * xx)) % md;
  }
  if (p & 1) {
    return ((bigmod(a, ((p + 1) / 2) * xx) +
             bigmod(b, ((p + 1) / 2) * xx) % md) *
            func(p / 2, xx)) %
           md;
  } else {
    return ((bigmod(a, ((p + 1) / 2) * xx) +
             bigmod(b, ((p + 1) / 2) * xx) % md) *
                func(p / 2, xx) -
            (bigmod(a, ((p + 1) / 2) * xx) * bigmod(b, ((p + 1) / 2) * xx) %
             md) %
                md +
            md) %
           md;
  }
}
int main() {
  memset(arr, 0, sizeof(arr));
  cin >> n >> a >> b >> k;
  cin >> str;
  for (int i = 0; i < k; i++)
    if (str[i] == '-') arr[i] = 1;
  long long ans = func(n, 1);
  for (long long i = 0; i < k; i++) {
    if (arr[i]) {
      ans -= (2 * ((((bigmod(a, k - i - 1) * bigmod(b, i)) % md) *
                    (func((n + 1) / k - 1, k) % md)) %
                   md)) %
             md;
      ans = (ans + md) % md;
    }
  }
  cout << ans << endl;
}
