#include <bits/stdc++.h>
#define int long long
#define rep(i,a,b) for(int i=(a);i<=(b);i++)
#define pre(i,a,b) for(int i=(b);i>=(a);i--)
#define ios ios::sync_with_stdio(false),cin.tie(0);
#define pb push_back
#define ps push
#define fi first
#define se second
#define ps push
#define Inf 0x3f3f3f3f3f3f3f3f
#define eps 1e-5
typedef long long ll;

const int N=3e5+5;
const int M=2e5+5;
const int mod=998244353;
using namespace std;

ll quick_power_mod(ll a,ll b,ll m)//pow(a,b)%m
{
    a%=m;
  ll result = 1;
  while(b>0)
  {
    if(b&1)
    result=(result*a)%m;
    a=(a*a)%m;
    b>>=1;
  }
  return result;
}
//计算组合数取模
ll comp(ll a,ll b,int p)//composite num C(a,b)%p
{
  if(a<b)return 0;
  if(a==b)return 1;
  if(b>a-b)b=a-b;
  ll ans=1,ca=1,cb=1;
  for(ll i=0;i<b;i++)
  {
    ca=(ca*(a-i))%p;
    cb=(cb*(b-i))%p;
  }
  ans=(ca*quick_power_mod(cb,p-2,p))%p;
  return ans;
}
ll lucas(ll n,ll m,ll p)
{
  ll ans=1;
  while(n&&m&&ans)
  {
    ans=(ans*comp(n%p,m%p,p))%p;//also can be recusive
    n/=p;
    m/=p;
  }
  return ans;
}


ll gcd(ll a,ll b){ return b==0?a:gcd(b,a%b); }
string   str;
signed main()
{
  ios;
  int n,q;
  cin>>n>>str>>q;
  int t,a,b;
  int cc=0;
  while(q--){
  	 cin>>t>>a>>b;
  	 if(t==1){
  	 	if(cc%2==0){
		   
  	 	swap(str[a-1],str[b-1]);
		}
		else{
	    if(a<=n){
		a+=n;
		
		}
		else{
			a-=n;
		}
		if(b<=n){
		b+=n;
		
		}
		else{
			b-=n;
		}
		
		swap(str[a-1],str[b-1]);
		}
	 }
	 else{
	 	cc++;
	 //	swap(str[n-1],str[2*n-1]);
	 }
  }
  if(cc%2==0){
  	cout<<str<<endl;
  }
  else{
    for(int i=n;i<2*n;i++){
    	cout<<str[i];
	}	
	for(int i=0;i<n;i++){
		cout<<str[i];
	}
	cout<<endl;
  }
  
  
  

  
  return 0 ;
}

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define fast_io ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define endl "\n"
#define all(v) v.begin(),v.end()

const int mod = 1e9 + 7;

int main (){
    fast_io;
    int n;
    cin >> n;
    string s;
    cin >> s;
    string start = s.substr(0, n);
    string last = s.substr(n, n);
    int q;
    cin >> q;
    while (q--) {
        int type, a, b;
        cin >> type >> a >> b;
        a--, b--;
        if (type == 1) {
            if (a < n && b < n) {
                swap(start[a], start[b]);
            }
            else if (a < n && b >= n) {
                swap(start[a], last[b - n]);
            }
            else if (a >= n && b < n) {
                swap(start[a - n], last[b]);
            }
            else {
                swap(last[a - n], last[b - n]);
            }
        }
        else {
            swap(start, last);
        }
    }
    cout << start << last << endl;
}
