#include <bits/stdc++.h>
using namespace std;
const int mod = 1e9 + 7;
const int N = 5005;
int jc[N], inv;
int n, r, h, a, b, ps[N], m, dp[2][N][N], qzh[2][N][N], inp[N], qza[N];
char s[N];
inline int Pow(int a, int b) {
	int ret = 1;
	while (b) {
		if (b & 1)
			ret = 1ll * ret * a % mod;
		a = 1ll * a * a % mod;
		b >>= 1;
	}
	return ret;
}
int fpw[2][N], pw[2][N];
int main() {
	scanf("%d%d%d%s%d%d", &n, &r, &h, s + 1, &b,&a); 
	int inv=Pow(r+h,mod-2);
	pw[0][0] = pw[1][0] = fpw[0][0] = fpw[1][0] = 1;
	for (int i = 1;i <= n;i++) {
		pw[0][i] = 1ll * pw[0][i - 1] * h % mod * inv% mod;
		pw[1][i] = 1ll * pw[1][i - 1] * r % mod * inv% mod;
		fpw[0][i] = Pow(pw[0][i], mod - 2);
		fpw[1][i] = Pow(pw[1][i], mod - 2);
	}
	for (int i = n;i >= 1;i--)
		if (s[i] == 'R') {
			ps[++m] = i;
			inp[m] = i;
		}
	for (int i = 1;i <= n+1;i++)
		qza[i] = qza[i-1] + (s[i] == 'H');
	ps[0] = n + 1;
	for (int i = 0;i <= N - 5;i++)
		qzh[0][0][i] = 1;
	//	cout<<pw[1][1]<<"\n";
	for (int i = 1;i <= m;i++) {
		int B = i & 1;
		int hz = n - m - qza[ps[i]];
	//	cout<<"HZ"<<hz<<"\n";
		for (int j = 0;j <= i;j++)
			for (int k = 0;k <=hz;k++) {
				int ai = qza[ps[i - 1]] - qza[ps[i]];
			//	if(k!=hz){
			assert(hz + k - ai-1>=0);
					dp[B][j][k] = 1ll * pw[1][1] * (k - ai < 0 ? pw[0][ai - k] : fpw[0][k - ai]) % mod * (qzh[B ^ 1][j][hz + k - ai-1] - (k - ai <= 0 ? 0 : qzh[B ^ 1][j][k - ai - 1])+mod) % mod;
		//			cout << i << " " << j << " " << k << " ai="<<ai<<" " << 1ll * pw[1][1] * (k - ai < 0 ? pw[0][ai - k] : fpw[0][k - ai]) % mod  << "\n";
		//			cout << hz + k - ai -1<< " " << k - ai - 1 << " "<<qzh[B ^ 1][j][hz + k - ai-1] <<"->"<< (qzh[B ^ 1][j][hz + k - ai] - (k - ai <= 0 ? 0 : qzh[B ^ 1][j][k - ai - 1])+mod) <<"\n"; 
			//	}
				if (!k && j)
					dp[B][j][k] = (dp[B][j][k] + 1ll*pw[0][ai]*qzh[B ^ 1][j - 1][n - m - qza[ps[i-1]]]%mod) % mod;
				qzh[B][j][k] = (qzh[B][j][k - 1] + 1ll * dp[i & 1][j][k] * pw[0][k] % mod) % mod;
		//		cout<<i<<" "<<j<<" "<<k<<"="<<dp[B][j][k]<<"\n\n";
			}
	}
//	cout<<(m&1)<<" "<<b<<" "<<a-qza[ps[m]]<<"\n";
	if (a < qza[ps[m]])
		cout << 0;
	else
		cout << dp[m & 1][b][a - qza[ps[m]]];
}
Compilation message (stderr)
dstorv.cpp: In function 'int main()':
dstorv.cpp:20:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   20 |         scanf("%d%d%d%s%d%d", &n, &r, &h, s + 1, &b,&a);
      |         ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... |