#include <bits/stdc++.h>
using namespace std;
clock_t __stt;
inline void TStart() { __stt = clock(); }
inline void TReport() {
  printf("\nTaken Time : %.3lf sec\n",
         (double)(clock() - __stt) / CLOCKS_PER_SEC);
}
template <typename T>
T MIN(T a, T b) {
  return a < b ? a : b;
}
template <typename T>
T MAX(T a, T b) {
  return a > b ? a : b;
}
template <typename T>
T ABS(T a) {
  return a > 0 ? a : (-a);
}
template <typename T>
void UMIN(T &a, T b) {
  if (b < a) a = b;
}
template <typename T>
void UMAX(T &a, T b) {
  if (b > a) a = b;
}
int n, m, q;
bool vis[10];
char x, s[100005][12];
class segT {
 public:
  int l[400005], r[400005], nxt[400005][10];
  void build(int p) {
    int i, j;
    if (l[p] < r[p]) {
      for (i = 0; i < m; ++i) {
        if (nxt[(p << 1) | 1][i] < 0)
          nxt[p][i] = nxt[(p << 1) | 1][i];
        else
          nxt[p][i] = nxt[p << 1][nxt[(p << 1) | 1][i]];
      }
    } else {
      for (i = 0; i < m; ++i) {
        memset(vis, 0, sizeof(vis));
        for (j = i; j >= 0 && j < m && !vis[j] && s[l[p]][j] != '^';) {
          vis[j] = 1;
          if (s[l[p]][j] == '<')
            --j;
          else
            ++j;
        }
        if (j < 0)
          nxt[p][i] = -n - 2 - l[p];
        else if (j == m)
          nxt[p][i] = -2 - l[p];
        else if (vis[j])
          nxt[p][i] = -1;
        else
          nxt[p][i] = j;
      }
    }
  }
  void init(int p, int L, int R) {
    l[p] = L;
    r[p] = R;
    if (L < R) {
      int M = ((L + R) >> 1);
      init((p << 1), L, M);
      init(((p << 1) | 1), M + 1, R);
    }
    build(p);
  }
  void rebuild(int p, int d) {
    if (l[p] < r[p]) {
      int M = ((l[p] + r[p]) >> 1);
      if (d <= M)
        rebuild((p << 1), d);
      else
        rebuild(((p << 1) | 1), d);
    }
    build(p);
  }
  int query(int p, int x, int y) {
    if (x == r[p]) return nxt[p][y];
    int M = ((l[p] + r[p]) >> 1);
    if (x > M) y = query(((p << 1) | 1), x, y);
    return (y < 0 ? y : query((p << 1), MIN(x, M), y));
  }
} segt;
void getch() {
  x = getchar();
  while (x == ' ' || x == '\n') x = getchar();
}
int main() {
  scanf("%d%d%d", &n, &m, &q);
  int i, j, k;
  for (i = 0; i < n; ++i) {
    scanf("%s", s[i]);
  }
  segt.init(1, 0, n - 1);
  while (q--) {
    getch();
    scanf("%d%d", &i, &j);
    if (x == 'A') {
      k = segt.query(1, i - 1, j - 1);
      if (k == -1)
        printf("-1 -1\n");
      else if (k >= 0)
        printf("0 %d\n", k + 1);
      else if (k > -n - 2)
        printf("%d %d\n", -k - 1, m + 1);
      else
        printf("%d 0\n", -k - n - 1);
    } else {
      getch();
      s[i - 1][j - 1] = x;
      segt.rebuild(1, i - 1);
    }
  }
  return 0;
}
