//Hello!..
//dört böler altı artı iki ama ne böler altı ne böler iki
//Başarı, Boş Duranın Hakkı Değil... Koşturanın Hakkıdır. Hakan?
//Ne yapayım, elimden gelen bu :(
//S'il vous plait
#include <bits/stdc++.h>
using namespace std;
typedef long long lo;
#define fi first
#define se second
#define endl "\n"
#define pb push_back
#define int long long
#define fio() ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL)
#define FOR for(int i=1;i<=n;i++)
#define setrandom mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
#define getrandom(a,b) uniform_int_distribution<int>(a,b)(rng)
#define mid ((start+end)/2)
#define ort ((bas+son)/2)
#define _ << " " <<
const lo inf = 1000000000;
const lo li = 500005;
const lo mod = 1000000007;
int n,m,a[li],k,flag,t;
int cev;
string s[4],ss;
vector<int> v;
map<string,int> vis;
inline string merge(string &s1,string &s2){
string st;
for(int i=0;i<n;i++){
if(s1[i]==s2[i])st+=s1[i];
else{
int var=0;
if(s1[i]=='I' || s2[i]=='I')var|=1;
if(s1[i]=='J' || s2[i]=='J')var|=2;
if(s1[i]=='O' || s2[i]=='O')var|=4;
if(var==3)st+='O';
if(var==5)st+='J';
if(var==6)st+='I';
}
}
//~ cerr<<st _ s1 _ s2 _ "AA\n";
return st;
}
int32_t main(){
fio();
cin>>n;
cin>>s[0]>>s[1]>>s[2];
vis[s[0]]=1;
vis[s[1]]=1;
vis[s[2]]=1;
string s1=merge(s[0],s[1]);
string s2=merge(s[0],s[2]);
string s3=merge(s[1],s[2]);
vis[merge(s[0],s[1])]=1;
vis[merge(s[2],s1)]=1;
vis[merge(s[0],s[2])]=1;
vis[merge(s[1],s2)]=1;
vis[merge(s[1],s[2])]=1;
vis[merge(s[0],s3)]=1;
cin>>t;
cin>>ss;
if(vis[ss])cout<<"Yes\n";
else cout<<"No\n";
while(t--){
int l,r;
char c;
cin>>l>>r>>c;l--;r--;
for(int i=l;i<=r;i++)ss[i]=c;
cout<<ss<<endl;
if(vis[ss])cout<<"Yes\n";
else cout<<"No\n";
}
return 0;
}