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*.
#include <bits/stdc++.h>
using namespace std;
 
typedef long long ll;
 
#define pb push_back
#define fo(i,n) for(int i=0; i<n; i++)
#define foo(i,a,n) for(int i=a; i<n; i++)
#define pii pair<int,int>
void show(vector<auto> v){for(auto it=v.begin(); it!=v.end(); ++it){cout<<*it<<" ";}cout<<"\n";}

int gcd(int a,int b)
{
	if(a==0 || b==0)
		return max(a,b);
	if(a>b)
		return gcd(a%b,b);
	else
		return gcd(a,b%a);
}



void solve()
{
	int n,m,k;cin>>n>>m>>k;

	vector<vector<int>> table(n,vector<int>(m));
	fo(i,n)
		fo(j,m)
			cin>>table[i][j];

	vector<int> mapR(n),mapC(m);
	fo(i,n)
		mapR[i] = i;
	fo(j,m)
		mapC[j] = j;

	fo(i,k)
	{
		char t;
		int x,y;
		cin>>t>>x>>y;

		if(t=='c')
			swap(mapC[x-1],mapC[y-1]);
		else if(t=='r')
			swap(mapR[x-1],mapR[y-1]);
		else
			cout<<table[mapR[x-1]][mapC[y-1]]<<"\n";
	}
}

signed main()
{
	ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
	// int T;
	// cin>>T;
	// for(int tt=1; tt<=T; tt++)	
		solve();
	

	
	return 0;
}