The Free Meteor Association (FMA) has got a problem: as meteors are moving, the Universal Cosmic Descriptive Humorous Program (UCDHP) needs to add a special module that would analyze this movement. 

UCDHP stores some secret information about meteors as an *n* × *m* table with integers in its cells. The order of meteors in the Universe is changing. That's why the main UCDHP module receives the following queries:
 -  The query to swap two table rows; -  The query to swap two table columns; -  The query to obtain a secret number in a particular table cell. 
As the main UCDHP module is critical, writing the functional of working with the table has been commissioned to you.
The first line contains three space-separated integers *n*, *m* and *k* (1 ≤ *n*, *m* ≤ 1000, 1 ≤ *k* ≤ 500000) — the number of table columns and rows and the number of queries, correspondingly.

Next *n* lines contain *m* space-separated numbers each — the initial state of the table. Each number *p* in the table is an integer and satisfies the inequality 0 ≤ *p* ≤ 10<sup class="upper-index">6</sup>.

Next *k* lines contain queries in the format "*s*<sub class="lower-index">*i*</sub> *x*<sub class="lower-index">*i*</sub> *y*<sub class="lower-index">*i*</sub>", where *s*<sub class="lower-index">*i*</sub> is one of the characters "с", "r" or "g", and *x*<sub class="lower-index">*i*</sub>, *y*<sub class="lower-index">*i*</sub> are two integers.
 -  If *s*<sub class="lower-index">*i*</sub> = "c", then the current query is the query to swap columns with indexes *x*<sub class="lower-index">*i*</sub> and *y*<sub class="lower-index">*i*</sub> (1 ≤ *x*, *y* ≤ *m*, *x* ≠ *y*); -  If *s*<sub class="lower-index">*i*</sub> = "r", then the current query is the query to swap rows with indexes *x*<sub class="lower-index">*i*</sub> and *y*<sub class="lower-index">*i*</sub> (1 ≤ *x*, *y* ≤ *n*, *x* ≠ *y*); -  If *s*<sub class="lower-index">*i*</sub> = "g", then the current query is the query to obtain the number that located in the *x*<sub class="lower-index">*i*</sub>-th row and in the *y*<sub class="lower-index">*i*</sub>-th column (1 ≤ *x* ≤ *n*, 1 ≤ *y* ≤ *m*). 
The table rows are considered to be indexed from top to bottom from 1 to *n*, and the table columns — from left to right from 1 to *m*.
# Problem Link:     https://codeforces.com/problemset/problem/222/B
# Problem Status:
# --------------------------- SEPARATOR ---------------------------
def TheAmazingFunction(A: list, Q: list):
    RS = dict()          # Row Swapping
    CS = dict()
    RS2 = dict()
    CS2 = dict()
    # ---------- Separator ----------
    for i in range(1, len(A)+1):
        RS.update({i: i})
        RS2.update({i: i})
    for i in range(1, len(A[0])+1):
        CS.update({i: i})
        CS2.update({i: i})
    # ---------- Separator ----------
    for i in range(len(Q)):
        # print(RS)
        # print(RS2)
        # print(CS)
        # print(CS2)
        if Q[i][0] == 'g':
            print(A[RS2.get(Q[i][1])-1][CS2.get(Q[i][2])-1])
        elif Q[i][0] == 'r':
            RS.update({RS2.get(Q[i][1]): Q[i][2]})
            T1 = RS2.get(Q[i][1])
            RS.update({RS2.get(Q[i][2]): Q[i][1]})
            T2 = RS2.get(Q[i][2])
            RS2.update({Q[i][2]: T1})
            RS2.update({Q[i][1]: T2})
        elif Q[i][0] == 'c':
            CS.update({CS2.get(Q[i][1]): Q[i][2]})
            T1 = CS2.get(Q[i][1])
            CS.update({CS2.get(Q[i][2]): Q[i][1]})
            T2 = CS2.get(Q[i][2])
            CS2.update({Q[i][2]: T1})
            CS2.update({Q[i][1]: T2})
    # ---------- Separator ----------


# --------------------------- SEPARATOR ---------------------------
N, M, K = list(map(int, input().split()))
Arr = []
Queries = []
for j in range(N):
    Arr.append(list(map(int, input().split())))
for j in range(K):
    Queries.append(list(input().split()))
    Queries[-1][1], Queries[-1][2] = int(Queries[-1][1]), int(Queries[-1][2])
TheAmazingFunction(Arr, Queries)
# --------------------------- SEPARATOR ---------------------------
