#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 5;
const int M = 1e9 + 7;
long long l,a[N],ans = 1,k,n,cnt;
string s;
long long h(long long x,long long y)
{
long long sum = 1;
while (y > 0)
{
if (y & 1)
{
sum *= x;
sum %= M;
}
x *= x;
x %= M;
y >>= 1;
}
return sum;
}
int main()
{
freopen("Moo.in","r",stdin);
freopen("Moo.out","w",stdout);
cin >> k >> n >> l >> s;
for (int i = 2;i <= n;i++)
{
a[i] = i * (i - 1);
a[i] %= M;
}
for (int i = n - 1;i >= 0;i--)
{
if (s[i] == 'O')
{
cnt++;
}
else
{
if (k == 2)
{
ans *= a[cnt] / 2;
}
else if (k == 1)
{
ans *= cnt;
}
else
{
for (long long j = cnt;j >= cnt - k + 1;j--)
{
if (j % k == 0)
{
ans *= (j / k);
}
else
{
ans *= j;
}
ans %= M;
}
}
ans %= M;
cnt -= k;
}
}
cout << h(ans,l);
return 0;
}