#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace std;
using namespace __gnu_pbds;
#define fi first
#define se second
#define mp make_pair
#define pb push_back
#define fbo find_by_order
#define ook order_of_key
typedef long long ll;
typedef pair<int,int> ii;
typedef vector<int> vi;
typedef long double ld;
typedef tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update> pbds;
typedef set<int>::iterator sit;
typedef map<int,int>::iterator mit;
typedef vector<int>::iterator vit;
char a[101][101];
ll dp[2][101][101];
const int MOD = 1e9 + 7;
int dx[4] = {1, -1, 0, 0};
int dy[4] = {0, 0, 1, -1};
int n, m;
bool isvalid(int x, int y)
{
if(x>=0&&x<n&&y>=0&&y<m) return true;
return false;
}
int main()
{
ios_base::sync_with_stdio(0); cin.tie(0);
int x, y, times;
cin>>n>>m>>times;
for(int i = 0; i < n; i++)
{
for(int j = 0; j < m; j++)
{
cin >> a[i][j];
if(a[i][j] == 'R')
{
x = i; y = j;
}
}
}
dp[0][x][y] = 1;
for(int i = 1; i <= times; i++)
{
int cur = (i&1); int prev = (cur^1);
for(int j = 0; j < n; j++)
{
for(int k = 0; k < m; k++)
{
dp[cur][j][k] = 0;
}
}
for(int j = 0; j < n; j++)
{
for(int k = 0; k < m; k++)
{
for(int l = 0; l < 4; l++)
{
int xx = j + dx[l]; int yy = k + dy[l];
if(isvalid(xx,yy))
{
if(a[j][k]!='#')
{
dp[cur][j][k] = (dp[cur][j][k] + dp[prev][xx][yy])%MOD;
}
}
}
}
}
}
for(int i = 0; i < n; i++)
{
for(int j = 0; j < m; j++)
{
cout << dp[times&1][i][j] << ' ';
}
cout << '\n';
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNpbmNsdWRlIDxleHQvcGJfZHMvYXNzb2NfY29udGFpbmVyLmhwcD4KI2luY2x1ZGUgPGV4dC9wYl9kcy90cmVlX3BvbGljeS5ocHA+CiAKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKdXNpbmcgbmFtZXNwYWNlIF9fZ251X3BiZHM7CiAKI2RlZmluZSBmaSBmaXJzdAojZGVmaW5lIHNlIHNlY29uZAojZGVmaW5lIG1wIG1ha2VfcGFpcgojZGVmaW5lIHBiIHB1c2hfYmFjawojZGVmaW5lIGZibyBmaW5kX2J5X29yZGVyCiNkZWZpbmUgb29rIG9yZGVyX29mX2tleQogCnR5cGVkZWYgbG9uZyBsb25nIGxsOwp0eXBlZGVmIHBhaXI8aW50LGludD4gaWk7CnR5cGVkZWYgdmVjdG9yPGludD4gdmk7CnR5cGVkZWYgbG9uZyBkb3VibGUgbGQ7IAp0eXBlZGVmIHRyZWU8aW50LCBudWxsX3R5cGUsIGxlc3M8aW50PiwgcmJfdHJlZV90YWcsIHRyZWVfb3JkZXJfc3RhdGlzdGljc19ub2RlX3VwZGF0ZT4gcGJkczsKdHlwZWRlZiBzZXQ8aW50Pjo6aXRlcmF0b3Igc2l0Owp0eXBlZGVmIG1hcDxpbnQsaW50Pjo6aXRlcmF0b3IgbWl0Owp0eXBlZGVmIHZlY3RvcjxpbnQ+OjppdGVyYXRvciB2aXQ7CiAKY2hhciBhWzEwMV1bMTAxXTsKbGwgZHBbMl1bMTAxXVsxMDFdOwpjb25zdCBpbnQgTU9EID0gMWU5ICsgNzsKaW50IGR4WzRdID0gezEsIC0xLCAwLCAwfTsKaW50IGR5WzRdID0gezAsIDAsIDEsIC0xfTsKaW50IG4sIG07CiAKYm9vbCBpc3ZhbGlkKGludCB4LCBpbnQgeSkKewoJaWYoeD49MCYmeDxuJiZ5Pj0wJiZ5PG0pIHJldHVybiB0cnVlOwoJcmV0dXJuIGZhbHNlOwp9CiAKaW50IG1haW4oKQp7Cglpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOyBjaW4udGllKDApOwoJaW50IHgsIHksIHRpbWVzOwoJY2luPj5uPj5tPj50aW1lczsKCWZvcihpbnQgaSA9IDA7IGkgPCBuOyBpKyspCgl7CgkJZm9yKGludCBqID0gMDsgaiA8IG07IGorKykKCQl7CgkJCWNpbiA+PiBhW2ldW2pdOwoJCQlpZihhW2ldW2pdID09ICdSJykKCQkJewoJCQkJeCA9IGk7IHkgPSBqOwoJCQl9CgkJfQoJfQoJZHBbMF1beF1beV0gPSAxOwoJZm9yKGludCBpID0gMTsgaSA8PSB0aW1lczsgaSsrKQoJewoJCWludCBjdXIgPSAoaSYxKTsgaW50IHByZXYgPSAoY3VyXjEpOwoJCWZvcihpbnQgaiA9IDA7IGogPCBuOyBqKyspCgkJewoJCQlmb3IoaW50IGsgPSAwOyBrIDwgbTsgaysrKQoJCQl7CgkJCQlkcFtjdXJdW2pdW2tdID0gMDsKCQkJfQoJCX0KCQlmb3IoaW50IGogPSAwOyBqIDwgbjsgaisrKQoJCXsKCQkJZm9yKGludCBrID0gMDsgayA8IG07IGsrKykKCQkJewoJCQkJZm9yKGludCBsID0gMDsgbCA8IDQ7IGwrKykKCQkJCXsKCQkJCQlpbnQgeHggPSBqICsgZHhbbF07IGludCB5eSA9IGsgKyBkeVtsXTsKCQkJCQlpZihpc3ZhbGlkKHh4LHl5KSkKCQkJCQl7CgkJCQkJCWlmKGFbal1ba10hPScjJykKCQkJCQkJewoJCQkJCQkJZHBbY3VyXVtqXVtrXSA9IChkcFtjdXJdW2pdW2tdICsgZHBbcHJldl1beHhdW3l5XSklTU9EOwoJCQkJCQl9CgkJCQkJfQoJCQkJfQoJCQl9CgkJfQoJfQoJZm9yKGludCBpID0gMDsgaSA8IG47IGkrKykKCXsKCQlmb3IoaW50IGogPSAwOyBqIDwgbTsgaisrKQoJCXsKCQkJY291dCA8PCBkcFt0aW1lcyYxXVtpXVtqXSA8PCAnICc7CgkJfQoJCWNvdXQgPDwgJ1xuJzsKCX0KfQog