#include <bits/stdc++.h>
using namespace std;
struct node{
int y;char z;
}bb[500005];
int n,m,last=-1;
string a;
int main(){
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
cin>>n>>a;
cin>>m;int mxormi=-1;
for(int i=0;i<m;i++){
int aa,b;char c;
cin>>aa>>b>>c;bb[i].y=b;bb[i].z=c;
if(aa==1){
a[b-1]=c;
}
else if(aa==2){
mxormi=1;
last=i+1;
// cout<<last<<endl;
}
else{
mxormi=0;
last=i+1;
// cout<<last<<endl;
}
// cout<<last<<endl;
}
priority_queue<int, vector<int>,greater<int> >q;
if(last!=-1){
for(int i=last;i<m;i++){
q.push(bb[i].y);
}
}
// cout<<q.size()<<" "<<q.front()<<endl;
if(mxormi==-1)
cout<<a;
else if(mxormi==1){
for(int i=0;i<a.size();i++){
if(a[i]>='A' && a[i]<='Z' && q.top()-1!=i){
cout<<char(a[i]-'A'+'a');
}
else{
cout<<a[i];
if(q.top()-1==i && q.size()){
q.pop();
}
}
}
}
else{
for(int i=0;i<n;i++){
if(a[i]>='a' && a[i]<='z' && q.top()-1!=i){
cout<<char(a[i]-'a'+'A');
}
else{
cout<<a[i];
if(q.top()-1==i && q.size()){
// cout<<q.size()<<" "<<q.front()<<endl;
// cout<<a[i];
q.pop();
}
}
}
}
return 0;
}