//#include "bits/stdc++.h"
//using namespace std;
//typedef long long ll;
//typedef pair<int, int> pii;
//typedef pair<ll, ll> pll;
//const int INF = 1e9;
//const ll LINF = 1e18;
//
//int dy[4] = {1,0,-1,0};
//int dx[4] = {0,1,0,-1};
//
//using Item = tuple<int,int,int>;
//map<Item,bool> mp;
//map<Item,int> Idx;
//vector<Item> Q;
//map<int,char> dir2S;
//
//int main(void) {
//    cin.tie(0); ios::sync_with_stdio(false);
//    dir2S[0] = 'S';
//    dir2S[1] = 'E';
//    dir2S[2] = 'N';
//    dir2S[3] = 'W';
//
//    ll H,W,L;
//    while(cin >> H >> W >> L,H){
//        mp.clear(); Q.clear(); Idx.clear();
//
//        vector<vector<char>> maze(H+2,vector<char>(W+2,'#'));
//        pii start;
//        int dir = -1;
//        for(int i = 1; i <= H; i++){
//            for(int j = 1; j <= W;j++){
//                cin >> maze[i][j];
//
//                if(maze[i][j] == '#' || maze[i][j] == '.') continue;
//                if(maze[i][j] == 'S'){
//                    dir = 0;
//                }
//                if(maze[i][j] == 'E'){
//                    dir = 1;
//                }
//                if(maze[i][j] == 'N'){
//                    dir = 2;
//                }
//                if(maze[i][j] == 'W'){
//                    dir = 3;
//                }
//
//                maze[i][j] = '.';
//
//                start = {i,j};
//            }
//        }
//
//        Item item = Item(start.first,start.second,dir);
//        Q.push_back(item);
//        while(true){
//            if(mp[item]) break;
//            mp[item] = true;
//            int y,x,dir; tie(y,x,dir) = item;
//
//            while(true){
//                int ny = y + dy[dir];
//                int nx = x + dx[dir];
//                if(maze[ny][nx] == '#'){
//                    dir = (dir + 3)%4;
//                    continue;
//                }
//                item = Item(ny,nx,dir);
//                Q.push_back(item);
//                break;
//            }
//        }
//
//        for(auto item:Q){
//            int y,x,dir; tie(y,x,dir) = item;
//            //cout << y << " " << x << " " << dir << endl;
//        }
//        if(L < Q.size()){
//            int y,x,dir; tie(y,x,dir) = Q[L];
//            cout << y << " " << x  << " " << dir2S[dir] << endl;
//            continue;
//        }
//        for(int i = 0; i < Q.size(); i++){
//            if(Idx.count(Q[i])){
//                L -= Idx[Q[i]];
//                L %= (i - Idx[Q[i]]);
//
//                int y,x,dir; tie(y,x,dir) = Q[L+Idx[Q[i]]];
//                cout << y << " " << x  << " " << dir2S[dir] << endl;
//                break;
//            }else{
//                Idx[Q[i]] = i;
//            }
//        }
//    }
//    return 0;
//}


#include "bits/stdc++.h"
using namespace std;
#define FOR(i,s,t) for(int i = s ; i < t ; i++)
#define SZ(a) ((int)a.size())
using LL = long long;

int main() {
    
    int H, W;
    LL L;
    while (cin >> H >> W >> L, H || W || L) {
        vector<string>a(H);
        FOR(i, 0, H) {
            cin >> a[i];
        }
        const int DY[] = { 0,0,1,-1 };// E,W,S,N
        const int DX[] = { 1,-1,0,0 };
        const int nxd[] = { 2,3,1,0 };
        auto isin = [](int a, int b, int c) { return a <= b && b < c; };
        using PII = pair<int, int>;
        int unchi = 0;
        string EWSN = "EWSN";
        PII S;
        FOR(i, 0, H) {
            FOR(j, 0, W) {
                if (isalpha(a[i][j])) {
                    S = PII(i, j);
                }
            }
        }
        int ny = S.first, nx = S.second; // 名前カス
        int dir = 0;
        {
            char c = a[S.first][S.second];
            dir = EWSN.find(c);
        }
        
        auto f = [&](LL& left, int &y, int &x) {
            vector<vector<vector<int>>>ti(H, vector<vector<int>>(W, vector<int>(4,-1)));
            int tt = 0;
            ti[S.first][S.second][dir] = 0;
            while (left) {
                //cout << "NOW:" << y << "," << x << endl;
                left--;
                int ny = DY[dir] + y, nx = DX[dir] + x;
                while (!isin(0, ny, H) || !isin(0, nx, W) || a[ny][nx] == '#') {
                    // change dir
                    //cout << dir << "," << nxd[dir] << endl;
                    dir = nxd[dir];
                    ny = DY[dir] + y;
                    nx = DX[dir] + x;
                    //    cout << "to:" << ny << "," << nx << endl;
                }
                if (ti[ny][nx][dir] != -1) {
                    unchi = tt - ti[ny][nx][dir] + 1;
                }
                ti[ny][nx][dir] = ++tt;
                //cout << ny << "," << nx << "|" << y << "," << x << endl;
                y = ny;
                x = nx;
            }
            return dir;
        };
        if (L <= 100000) {
            int id = f(L, ny, nx);
            // やる
            cout << ny + 1<<" " << nx + 1 << " ";
            cout << EWSN[id] << endl;
        }
        else {
            // 一度ループしてなんかしたら，うくをする
            LL X = 100000;
            L -= 100000;
            f(X, ny, nx);
            LL loop = 0;
            { // loopもとめる & Lをへらす
                // うく
                loop = unchi;
            }
            
            LL x = L / loop;
            L -= x * loop;
            int id = f(L, ny, nx);
            // やる
            cout << ny + 1 << " " << nx + 1 << " ";
            cout << EWSN[id] << endl;
        }
    }
    
    return 0;
}



Measured memory_bytes: 3764