#include <bits/stdc++.h>
using namespace std;
const long long sze = 1 << 17, MOD1 = 1e9 + 9;
inline long long MOD(long long v) { return (v % MOD1 + MOD1) % MOD1; }
long long my_pw(long long value, long long pw) {
  long long res = 1;
  while (pw) {
    if (pw & 1LL) res = MOD(res * value);
    pw >>= 1LL;
    value = MOD(value * value);
  }
  return res;
}
long long my_div(long long a, long long b) {
  return MOD(a * my_pw(b, MOD1 - 2));
}
signed main() {
  ios::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  long long n, a, b, k, ans = 0;
  cin >> n >> a >> b >> k;
  long long m = (n + 1) / k;
  string s;
  cin >> s;
  if (a > b) {
    reverse(s.begin(), s.end());
    swap(a, b);
  }
  for (long long i = 0; i < k; ++i) {
    char c;
    c = s[i];
    long long label = (c == '-') ? -1 : 1;
    long long cur = MOD(my_pw(a, n - i) * my_pw(b, i));
    if (my_pw(a, k) == my_pw(b, k)) {
      ans = MOD(ans + label * m * cur);
      continue;
    }
    long long up = MOD(cur * MOD(my_pw(b, k * m) - my_pw(a, k * m)));
    long long down = MOD(my_pw(a, k * m - k) * MOD(my_pw(b, k) - my_pw(a, k)));
    ans = MOD(ans + label * my_div(up, down));
  }
  cout << ans;
}
