#include <bits/stdc++.h>
using namespace std;
long long n, a, b, k;
long long q;
long long param = 0;
string ciag;
long long MOD = 1000000009;
long long potega(long long a_1, long long n_1) {
  if (n_1 == 0) return 1;
  if (n_1 == 1)
    return a_1;
  else if (n_1 % 2 == 0) {
    long long s = potega(a_1, n_1 / 2);
    return (s * s) % MOD;
  } else {
    return (potega(a_1, n_1 - 1) * a_1) % MOD;
  }
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cin >> n >> a >> b >> k;
  cin >> ciag;
  q = (potega(b, k) * potega(a, MOD - 1 - k)) % MOD;
  if (q < 0) {
    q %= MOD;
    q += MOD;
    q %= MOD;
  }
  long long krotnosc = ((n + 1) / k);
  if (q != 1) {
    for (int i = 0; i < (k); ++i) {
      if (ciag[i] == '-') {
        long long a_1 = (potega(a, n - i) * potega(b, i)) % MOD;
        if (a_1 < 0) {
          a_1 %= MOD;
          a_1 += MOD;
          a_1 %= MOD;
        }
        long long temp_ =
            (((a_1 * ((potega(q, krotnosc) - 1 + MOD) % MOD) % MOD)) *
             (potega(q - 1, MOD - 2))) %
            MOD;
        if (temp_ < 0) {
          temp_ %= MOD;
          temp_ += MOD;
          temp_ %= MOD;
        }
        param = ((param - temp_) % MOD + MOD) % MOD;
        if (param < 0) {
          param %= MOD;
          param += MOD;
          param %= MOD;
        }
      } else {
        long long a_1 = (potega(a, n - i) * potega(b, i)) % MOD;
        if (a_1 < 0) {
          a_1 %= MOD;
          a_1 += MOD;
          a_1 %= MOD;
        }
        long long temp_ =
            (((a_1 * ((potega(q, krotnosc) - 1 + MOD) % MOD) % MOD)) *
             (potega(q - 1, MOD - 2))) %
            MOD;
        if (temp_ < 0) {
          temp_ %= MOD;
          temp_ += MOD;
          temp_ %= MOD;
        }
        param = (param + temp_) % MOD;
        if (param < 0) {
          param %= MOD;
          param += MOD;
          param %= MOD;
        }
      }
    }
  } else {
    for (int i = 0; i < (k); ++i) {
      if (ciag[i] == '-') {
        long long a_1 = (potega(a, n - i) * potega(b, i)) % MOD;
        if (a_1 < 0) {
          a_1 %= MOD;
          a_1 += MOD;
          a_1 %= MOD;
        }
        long long temp_ = (a_1 * krotnosc) % MOD;
        if (temp_ < 0) {
          temp_ %= MOD;
          temp_ += MOD;
          temp_ %= MOD;
        }
        param = ((param - temp_) % MOD + MOD) % MOD;
        if (param < 0) {
          param %= MOD;
          param += MOD;
          param %= MOD;
        }
      } else {
        long long a_1 = (potega(a, n - i) * potega(b, i)) % MOD;
        if (a_1 < 0) {
          a_1 %= MOD;
          a_1 += MOD;
          a_1 %= MOD;
        }
        long long temp_ = (a_1 * krotnosc) % MOD;
        if (temp_ < 0) {
          temp_ %= MOD;
          temp_ += MOD;
          temp_ %= MOD;
        }
        param = (param + temp_) % MOD;
        if (param < 0) {
          param %= MOD;
          param += MOD;
          param %= MOD;
        }
      }
    }
  }
  cout << (param + MOD) % MOD << "\n";
  return 0;
}
