#include <bits/stdc++.h>
using namespace std;
const long long MOD = 1000000007;
long long dp[201][201] = {};

void add(long long &a, long long b) {
    a = (a + b) % MOD;
}

int main() {
    int N; cin >> N;
    vector<char> c;
    for(int i=0; i<N; ++i) {
        char tmp; cin >> tmp;
        if(tmp != '-') c.emplace_back(tmp);
    }

    N = c.size();
    dp[0][0] = 1;
    for(int n=0; n<N; ++n) {
        for(int x=0; x<=N; ++x) {
            if(c[n] == 'U') {
                if(x < N) add(dp[n + 1][x + 1], dp[n][x]);
                add(dp[n + 1][x], dp[n][x] * x);
            } else {
                if(x > 0) add(dp[n + 1][x - 1], dp[n][x] * x * x);
                add(dp[n + 1][x], dp[n][x] * x);
            }
        }
    }
    cout << dp[N][0] << endl;
}
