#include <bits/stdc++.h>
#define rep(i, n) for (long long i = 0; i < (n); ++i)
using namespace std;
using ll = long long;
using P = pair<int, int>;
using V = vector<int>;

int main()
{
    int n, q;
    string s;

    cin >> n >> s >> q;
    string sf = s.substr(0,n);
    string sb = s.substr(n,2*n);
    int flip = 0;
    V t(q);
    V a(q);
    V b(q);
    for (int i = 0; i < q; i++)
    {
        cin >> t[i] >> a[i] >> b[i];
    }

    
    for (int i = 0; i < q; i++)
    {
        if (t[i] == 2)
        {
            ++flip;
        }
        else
        {
            if (flip%2==0)
            {
                if ((a[i]-1) / n == 1)
                {
                    swap(sb[(a[i]-1)%n], sb[(b[i]-1)%n]);
                }
                else if ((b[i]-1) / n == 1)
                {
                    swap(sf[(a[i]-1)%n], sb[(b[i]-1)%n]);
                }
                else
                {
                    swap(sf[(a[i]-1)%n], sf[(b[i]-1)%n]);
                }
            }
            else
            {
                if ((a[i]-1) / n == 1)
                {
                    swap(sf[(a[i]-1)%n], sf[(b[i]-1)%n]);
                }
                else if ((b[i]-1) / n == 1)
                {
                    swap(sb[(a[i]-1)%n], sf[(b[i]-1)%n]);
                }
                else
                {
                    swap(sb[(a[i]-1)%n], sb[(b[i]-1)%n]);
                }
            }
        }
    }

    string ans;
    if (flip%2==0)
    {
        ans = sf + sb;
    }
    else
    {
        ans = sb + sf;
    }
    
    cout << ans << endl;
    

    return 0;
}
#include<bits/stdc++.h>
using namespace std;
/*-----------------------------------------------------------------------------------------*/
#define ll long long
#define ld long double
#define pb push_back
#define vll vector<ll>
#define pll pair<ll,ll>
#define vpll vector<pll>
#define ub upper_bound
#define lb lower_bound
#define all(v) ((v).begin()),((v).end())
#define allr(v) ((v).rbegin()),((v).rend())
#define ff first
#define ss second
#define mp make_pair
#define pll pair<ll,ll> 
#define fo(i,n) for(ll i=0;i<n;i++)
#define foa(i,s,e) for(ll i=(s);i<=e;i++)
#define fod(i,s,e) for(ll i= (s);i>=(e);i--)
#define deb(x) cerr<<#x<<' '<<'='<<' '<<x<<'\n'
#define sz(x) (ll)(x.size())
#define ANS cout<<ans<<'\n'
#define YES cout<<"YES\n"
#define NO cout<<"NO\n"
#define Yes cout<<"Yes\n"
#define No cout<<"No\n"
/*-----------------------------------------------------------------------------------------*/
#define fill(a,b) memset(a, b, sizeof(a))
#define setbits(x) __builtin_popcountll(x)
#define vout(v) for(auto &x : v){cout << x << " ";}
#define vin(v) for (auto &x : v){cin >> x;}
#define print2d(dp,n,m) fo(i, n){fo(j, m)cout<<dp[i][j]<<" ";cout<<"\n";}
/*-----------------------------------------------------------------------------------------*/
const ld pi = 3.14159265358979323846;
ll MOD = 1e9 + 7;
//ll MOD = 998244353;
const char nl = '\n';
const ll inf = 2000000000000000000;
/*-----------------------------------------------------------------------------------------*/
void kmax(ll &a, ll b){
    if(b > a)a = b;
}
void kmin(ll &a, ll b){
    if(b < a)a = b;
}
ll nxt(){ll x; cin >> x; return x;}
ll mul(ll x,ll y){
    return (1ll* (x%MOD)*(y%MOD));
}
ll modpow(ll x,ll y){ll z=1;while(y>0){if(y%2)z=mul(z,x);x =mul(x,x) ;y/=2;}return z;}
ll power(ll x,ll y){ll z=1;while(y>0){if(y%2)z=z*x;x =x*x ;y/=2;}return z;}
ll gcd(ll a,ll b){if(a<b) return gcd(b,a);if(b==0) return a;return gcd(b,a%b);} 
ll min(ll a,ll b){if(a<b)return a;return b;}
ll max(ll a,ll b){if(a>b)return a;return b;}
ll sq(ll a){
    ll ans = (1ll*a*a);
    return ans;
}
/*-----------------------------------------------------------------------------------------*/
// const ll N = 3e5 + 5;
// bitset<N> dp;
// void partition(vll &v){
//     ll n = sz(v);
//     fo(i, n){
//         dp |= dp << v[i];
//     } 
// }
/*-----------------------------------------------------------------------------------------*/
void solve(){
    ll n;
    cin >> n;
    string s;
    cin >> s;
    ll q;
    cin >> q;
    ll c = 0;
    fo(i, q){
        ll t, a, b;
        cin >> t >> a >> b;
        a--, b--;
        if(t == 1){
            if(c&1){
                swap(s[(n+a)%(2*n)], s[(n+b)%(2*n)]);
            } else {
                swap(s[a], s[b]);
            }
        } 
        else{
            c++;
        }
    }
    fo(i, 2*n){
        cout << s[((c&1)*n+i)%(2*n)];
    }
    
}
int main(){ 
    ios::sync_with_stdio(false);
    cin.tie(0),cout.tie(0);
    #ifndef ONLINE_JUDGE
    freopen("inputf.txt" , "r" , stdin) ;
    freopen("outputf.txt" , "w" , stdout) ;
    freopen("error.txt" , "w" , stderr) ;
    #endif
    ll TC = 1;
    //cin>>TC;
    fo(TT, TC){
        //cout << "Case #"<< TT + 1 << ": ";
        solve();
    }
    cerr << "Time : " << 1000 * ((double)clock()) / (double)CLOCKS_PER_SEC << "ms\n";
}
