#include<bits/stdc++.h>
using namespace std;
long long k,n,l,f[1000005],ff[1000005],as=1,ct;
const long long M=1e9+7;
string s;
inline long long pw(long long x,long long y){
long long ss=1;
while(y){
if(y&1) ss=ss*x%M;
x=x*x%M;
y>>=1;
}
return ss;
}
long long C(long long x,long long y){
if(x<y) return 0;
return f[x]*ff[y]%M*ff[x-y]%M;
}
int main(){
freopen("Moo.in","r",stdin);
freopen("Moo.out","w",stdout);
ios::sync_with_stdio(false);
cin>>k>>n>>l>>s;
s=' '+s,f[0]=ff[0]=ff[1]=1;
for(int i=1;i<=n;i++) f[i]=f[i-1]*i%M;
for(int i=2;i<=n;i++) ff[i]=(M-M/i)*ff[M%i]%M;
for(int i=2;i<=n;i++) ff[i]=ff[i-1]*ff[i]%M;
for(int i=n;i>=1;i--){
if(s[i]=='O') ct++;
else{
as=as*C(ct,k)%M;
ct-=k;
}
}
as=pw(as,l);
cout<<as;
return 0;
}