#include <bits/stdc++.h>
using namespace std;
const long long inf = 1e16;
const int MOD = 1e9 + 9;
typedef decay<decltype(MOD)>::type T;
struct mi {
  T val;
  explicit operator T() const { return val; }
  mi() { val = 0; }
  mi(const long long& v) {
    val = (-MOD <= v && v <= MOD) ? v : v % MOD;
    if (val < 0) val += MOD;
  }
  friend ostream& operator<<(ostream& os, const mi& a) { return os << a.val; }
  friend bool operator==(const mi& a, const mi& b) { return a.val == b.val; }
  friend bool operator!=(const mi& a, const mi& b) { return !(a == b); }
  friend bool operator<(const mi& a, const mi& b) { return a.val < b.val; }
  mi operator-() const { return mi(-val); }
  mi& operator+=(const mi& m) {
    if ((val += m.val) >= MOD) val -= MOD;
    return *this;
  }
  mi& operator-=(const mi& m) {
    if ((val -= m.val) < 0) val += MOD;
    return *this;
  }
  mi& operator*=(const mi& m) {
    val = (long long)val * m.val % MOD;
    return *this;
  }
  friend mi pow(mi a, long long p) {
    mi ans = 1;
    assert(p >= 0);
    for (; p; p /= 2, a *= a)
      if (p & 1) ans *= a;
    return ans;
  }
  friend mi inv(const mi& a) {
    assert(a != 0);
    return pow(a, MOD - 2);
  }
  mi& operator/=(const mi& m) { return (*this) *= inv(m); }
  friend mi operator+(mi a, const mi& b) { return a += b; }
  friend mi operator-(mi a, const mi& b) { return a -= b; }
  friend mi operator*(mi a, const mi& b) { return a *= b; }
  friend mi operator/(mi a, const mi& b) { return a /= b; }
};
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  long long n, k, at, bt;
  mi a, b;
  cin >> n >> at >> bt >> k;
  a = at;
  b = bt;
  string second;
  cin >> second;
  mi signs[k];
  for (long long i = 0; i < k; i++) {
    if (second[i] == '+') {
      signs[i] = 1;
    } else {
      signs[i] = -1;
    }
  }
  mi first = 0;
  for (long long i = 0; i < k; i++) {
    first += pow(a, n - i) * pow(b, i) * signs[i];
  }
  mi r = b / a;
  long long p = (n + 1) / k;
  r = pow(r, k);
  if (first == 0) {
    cout << 0 << endl;
    return 0;
  }
  if (r == 1) {
    cout << p * first << endl;
    return 0;
  }
  cout << first * ((1 - pow(r, p)) / (1 - r)) << endl;
}
