#include <bits/stdc++.h>   using namespace std;   const int inf = (int)1e9;   const double INF = 1e12, EPS = 1e-9;   const int B = 2000;   const int dy[] = {-1, 0, 1, 0}, dx[] = {0, -1, 0, 1};   int h, w, q;   int qs[100000][4];   char in[100010][12], dir[256];   int dp[100010 * 12], vis[100010][12];   inline int to(int y, int x) {     int &res = dp[y * 12 + x];     if (res != -1) return res;     if (y == 0 || x == 0 || x == w + 1) return res = y * 12 + x;     res = -2;     int d = dir[in[y][x]];     return res = to(y + dy[d], x + dx[d]);   }   int main() {     dir[ < ] = 1;     dir[ ^ ] = 0;     dir[ > ] = 3;     scanf( %d%d%d , &h, &w, &q);     for (int i = 0; i < (int)h; i++) scanf( %s , in[i + 1] + 1);     for (int i = 0; i < (int)q; i++) {       char c, d;       int y, x;       scanf(  %c%d%d , &c, &y, &x);       qs[i][0] = c ==  A ;       qs[i][1] = y;       qs[i][2] = x;       if (c ==  C ) {         scanf(  %c , &d);         qs[i][3] = d;       }     }     memset(vis, -1, sizeof(vis));     for (int it = 0; it < (int)q; it++) {       if (it % B == 0) {         memset(dp, -1, sizeof(dp));         for (int i = it; i < it + B && i < q; i++)           if (qs[i][0] == 0) {             int y = qs[i][1], x = qs[i][2];             dp[y * 12 + x] = y * 12 + x;           }       }       int y = qs[it][1], x = qs[it][2];       if (!qs[it][0]) {         in[y][x] = (char)qs[it][3];         continue;       }       while (1) {         if (x == 0 || x == w + 1 || y == 0) {           printf( %d %d n , y, x);           break;         }         if (vis[y][x] == it) {           puts( -1 -1 );           break;         }         vis[y][x] = it;         int ny = to(y, x), nx;         if (ny < 0) {           puts( -1 -1 );           break;         }         nx = ny % 12;         ny /= 12;         if (nx == 0 || nx == w + 1 || ny == 0) {           printf( %d %d n , ny, nx);           break;         }         int d = dir[in[ny][nx]];         y = ny + dy[d];         x = nx + dx[d];       }     }     return 0;   }   