#include<iostream>
#include<sstream>
#include<algorithm>
#include<set>
#include<map>
#include<queue>
#include<complex>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cassert>

#define rep(i,n) for(int i=0;i<(int)n;i++)
#define all(c) (c).begin(),(c).end()
#define mp make_pair
#define pb push_back
#define each(i,c) for(__typeof((c).begin()) i=(c).begin();i!=(c).end();i++)
#define dbg(x) cerr<<__LINE__<<": "<<#x<<" = "<<(x)<<endl

using namespace std;

typedef long long ll;
typedef vector<int> vi;
typedef pair<int,int> pi;
const int inf = (int)1e9;
const double INF = 1e12, EPS = 1e-9;

const char *dir = "NWSE";
const int dy[] = {-1, 0, 1, 0}, dx[] = {0, -1, 0, 1};
int h, w;
ll l, p[100][101][4];
char in[100][101];

int main(){
	while(cin >> h >> w >> l, h){
		int y, x, d;
		rep(i, h){
			cin >> in[i];
			rep(j, w) if(isalpha(in[i][j])) y = i, x = j;
		}
		for(d = 0; dir[d] != in[y][x]; d++);
		
		memset(p, -1, sizeof(p));
		ll t = 0;
		while(t < l){
			if(p[y][x][d] >= 0){
				ll T = t - p[y][x][d];
				t += (l - t) / T * T;
				if(t == l) break;
			}
			p[y][x][d] = t;
			
			rep(it, 4){
				int ny = y + dy[d], nx = x + dx[d];
				if(ny < 0 || nx < 0 || ny >= h || nx >= w || in[ny][nx] == '#'){
					d = (d + 3) % 4;
					continue;
				}
				y = ny; x = nx; break;
			}
			t++;
		}
		cout << y + 1 << " " << x + 1 << " " << dir[d] << endl;
	}
	return 0;
}