#include <iostream>
#include <vector>
using namespace std;
class Step {
public:
int i;
int j;
int lifes;
Step(int i, int j, int lifes) {
this->i = i;
this->j = j;
this->lifes = lifes;
}
};
typedef vector< vector<char> > Map;
typedef vector<Step*> Steps;
bool mario(Map& m, Steps& s) {
int i, j, lifes;
int l=0, r=1;
Step *p;
while (l < r) {
p = s[l++];
//cout << p->i << " " << p->j << " " << p->lifes << " " << m[p->i][p->j] << endl;
lifes = p->lifes;
if (lifes < 0)
return false;
i = p->i;
j = p->j;
if (m[i][j] == 'x')
continue;
if (m[i][j] == 'T')
return true;
m[i][j] = 'x';
lifes--;
s.emplace_back(new Step(i-1, j, lifes));
s.emplace_back(new Step(i, j+1, lifes));
s.emplace_back(new Step(i+1, j, lifes));
s.emplace_back(new Step(i, j-1, lifes));
r += 4;
}
return false;
}
int main() {
int h, w;
cin >> h >> w;
Map matrix(h+2, vector<char>(w+2));
int i, j;
int x, y;
for (i=1; i<=h; i++) {
for (j=1; j<=w; j++) {
cin >> matrix[i][j];
if (matrix[i][j] == 'S') {
x = i;
y = j;
}
}
matrix[i][0] = 'x';
matrix[i][j] = 'x';
}
for (j=1; j<=w; j++) {
matrix[0][j] = 'x';
matrix[i][j] = 'x';
}
int lifes;
cin >> lifes;
Steps s;
s.emplace_back(new Step(x, y, lifes*4));
if (mario(matrix, s))
cout << "SIM\n";
else
cout << "NAO\n";
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwogCmNsYXNzIFN0ZXAgewogICAgcHVibGljOgogICAgaW50IGk7CiAgICBpbnQgajsKICAgIGludCBsaWZlczsKIAogICAgU3RlcChpbnQgaSwgaW50IGosIGludCBsaWZlcykgewogICAgICAgIHRoaXMtPmkgPSBpOwogICAgICAgIHRoaXMtPmogPSBqOwogICAgICAgIHRoaXMtPmxpZmVzID0gbGlmZXM7CiAgICB9Cn07CiAKdHlwZWRlZiB2ZWN0b3I8IHZlY3RvcjxjaGFyPiA+IE1hcDsKdHlwZWRlZiB2ZWN0b3I8U3RlcCo+IFN0ZXBzOwoKYm9vbCBtYXJpbyhNYXAmIG0sIFN0ZXBzJiBzKSB7CglpbnQgaSwgaiwgbGlmZXM7CglpbnQgbD0wLCByPTE7CglTdGVwICpwOwoJCgl3aGlsZSAobCA8IHIpIHsKCQlwID0gc1tsKytdOwoJCS8vY291dCA8PCBwLT5pIDw8ICIgIiA8PCBwLT5qIDw8ICIgIiA8PCBwLT5saWZlcyA8PCAiICIgPDwgbVtwLT5pXVtwLT5qXSA8PCBlbmRsOwoJCQoJCWxpZmVzID0gcC0+bGlmZXM7CgkgICAgaWYgKGxpZmVzIDwgMCkKCSAgICAgICAgcmV0dXJuIGZhbHNlOwogCgkgICAgaSA9IHAtPmk7CgkgICAgaiA9IHAtPmo7CiAKCSAgICBpZiAobVtpXVtqXSA9PSAneCcpCgkgICAgICAgIGNvbnRpbnVlOwogCgkgICAgaWYgKG1baV1bal0gPT0gJ1QnKSAKCQkJcmV0dXJuIHRydWU7CiAKCSAgICBtW2ldW2pdID0gJ3gnOwoJICAgIGxpZmVzLS07CgkgICAgcy5lbXBsYWNlX2JhY2sobmV3IFN0ZXAoaS0xLCBqLCBsaWZlcykpOwoJICAgIHMuZW1wbGFjZV9iYWNrKG5ldyBTdGVwKGksIGorMSwgbGlmZXMpKTsKCSAgICBzLmVtcGxhY2VfYmFjayhuZXcgU3RlcChpKzEsIGosIGxpZmVzKSk7CgkgICAgcy5lbXBsYWNlX2JhY2sobmV3IFN0ZXAoaSwgai0xLCBsaWZlcykpOwoJICAgIHIgKz0gNDsKCX0KICAgIHJldHVybiBmYWxzZTsKfQogCmludCBtYWluKCkgewogICAgaW50IGgsIHc7CiAgICBjaW4gPj4gaCA+PiB3OwogCiAgICBNYXAgbWF0cml4KGgrMiwgdmVjdG9yPGNoYXI+KHcrMikpOwogCiAgICBpbnQgaSwgajsKICAgIGludCB4LCB5OwogCiAgICBmb3IgKGk9MTsgaTw9aDsgaSsrKSB7CiAgICAgICAgZm9yIChqPTE7IGo8PXc7IGorKykgewogICAgICAgICAgICBjaW4gPj4gbWF0cml4W2ldW2pdOwogICAgICAgICAgICBpZiAobWF0cml4W2ldW2pdID09ICdTJykgewogICAgICAgICAgICAgICAgeCA9IGk7CiAgICAgICAgICAgICAgICB5ID0gajsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBtYXRyaXhbaV1bMF0gPSAneCc7CiAgICAgICAgbWF0cml4W2ldW2pdID0gJ3gnOwogICAgfQogCiAgICBmb3IgKGo9MTsgajw9dzsgaisrKSB7CiAgICAgICAgbWF0cml4WzBdW2pdID0gJ3gnOwogICAgICAgIG1hdHJpeFtpXVtqXSA9ICd4JzsKICAgIH0KIAogICAgaW50IGxpZmVzOwogICAgY2luID4+IGxpZmVzOwogCiAgICBTdGVwcyBzOwogICAgcy5lbXBsYWNlX2JhY2sobmV3IFN0ZXAoeCwgeSwgbGlmZXMqNCkpOwogCiAgICBpZiAobWFyaW8obWF0cml4LCBzKSkKICAgICAgICBjb3V0IDw8ICJTSU1cbiI7CiAgICBlbHNlCiAgICAgICAgY291dCA8PCAiTkFPXG4iOwogCiAgICByZXR1cm4gMDsKfQ==