#include <algorithm>
#include <iostream>
#include <vector>
#include <math.h>
#include <set>
#include <map>
#include <string>
#include <stack>
#include <queue>
#include <iomanip>
#include <numeric>
#include <tuple>
#include <bitset>
#include <complex>
#include <unistd.h>
#include <cassert>
#include <cctype>
#include <random>
#define _USE_MATH_DEFINES
#define _GLIBCXX_DEBUG
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> plglg;
typedef pair<double, ll> pdlg;
typedef tuple<int, int, int> tiii;
typedef tuple<ll, ll, ll> tlglglg;
typedef tuple<double, double, double> tddd;
typedef complex<double> xy_t;
#define REP(i, x, y) for(ll i = x; i < y; i++)
int dx[4] = {1, 0, -1, 0};
int dy[4] = {0, 1, 0, -1};
double pi = 3.141592653589793;
ll mod = 1000000007;
int intmax = 2147483647;
int intmin = -2147483648;
ll llmax = 9223372036854775807;
ll llmin = -9223372036854775807;
int iinf = intmax / 8;
ll inf = llmax / 8;
double eps = 1e-11;

ll bo[110][110][4];

int main() {
    while (1) {
        ll H, W, L;
        cin >> H >> W >> L;
        if (H == 0) {
            break;
        }
        REP(i, 0, 110) {
            REP(j, 0, 110) {
                fill(bo[i][j], bo[i][j] + 4, -2);
            }
        }
        ll dir, x, y;
        REP(i, 1, H + 1) {
            string s;
            cin >> s;
            REP(j, 1, W + 1) {
                char c = s[j - 1];
                if (c == '.') {
                    REP(k, 0, 4) {
                        bo[i][j][k] = -1;
                    }
                } else if (c == 'E' || c == 'S' || c == 'W' || c == 'N') {
                    REP(k, 0, 4) {
                        bo[i][j][k] = -1;
                    }
                    if (c == 'E') {
                        dir = 1;
                        bo[i][j][1] = 0;
                    } else if (c == 'S') {
                        dir = 0;
                        bo[i][j][0] = 0;
                    } else if (c == 'W') {
                        dir = 3;
                        bo[i][j][3] = 0;
                    } else if (c == 'N') {
                        dir = 2;
                        bo[i][j][2] = 0;
                    }
                    x = i;
                    y = j;
                }
            }
        }
        ll ord = 0;
        ll num;
        ll pre;
        while (1) {
            ll xx = x + dx[dir];
            ll yy = y + dy[dir];
            ll bonum = bo[xx][yy][dir];
            if (bonum >= 0) {
                ll loop = ord + 1 - bonum;
                ll rem = (L - bonum) % loop;
                num = bonum + rem;
                if (rem == 0) {
                    pre = bonum + loop - 1;
                } else {
                    pre = num - 1;
                }
                break;
            } else if (bonum == -1) {
                ord++;
                x = xx;
                y = yy;
                bo[xx][yy][dir] = ord;
                if (ord == L) {
                    num = L;
                    pre = L - 1;
                    break;
                }
            } else {
                dir = (dir + 3) % 4;
                bo[x][y][dir] = ord;
            }
        }
        // REP(i, 0, H + 2) {
        //     REP(j, 0, W + 2) {
        //         REP(k, 0, 4) {
        //             cout << bo[i][j][k] << " ";
        //         }
        //         cout << "aaa ";
        //     }
        //     cout << endl;
        // }
        ll ansx, ansy;
        ll prex, prey;
        char ansdir;
        REP(i, 1, H + 1) {
            REP(j, 1, W + 1) {
                REP(k, 0, 4) {
                    if (bo[i][j][k] == num) {
                        ansx = i;
                        ansy = j;
                    } else if (bo[i][j][k] == pre) {
                        prex = i;
                        prey = j;
                    }
                }
            }
        }
        if (ansx == prex) {
            if (ansy > prey) {
                ansdir = 'E';
            } else {
                ansdir = 'W';
            }
        } else {
            if (ansx > prex) {
                ansdir = 'S';
            } else {
                ansdir = 'N';
            }
        }
        cout << ansx << " " << ansy << " " << ansdir << endl;
    }
}



Measured memory_bytes: 3576