#include <bits/stdc++.h>
#define ll long long
#define mk make_pair
#define pb push_back
#define f first
#define s second
using namespace std;
ll mod = 1e9 + 7 ;
const int N = 1e6 + 10 ;
void solve(){
int n , andd , orr , xorr ;
cin >> n >> andd >> orr >> xorr ;
string a , b , c ;
cin >> a >> b >> c ;
string v = "" ;
for(int i=0 ; i<n ; i++) v += '-';
for(int i=0 ; i<n ; i++){
if(a[i] == '1' && b[i] == '1' && c[i] == '0'){
if(xorr){
xorr--;
v[i] = '^';
}
else{
cout << "NO" ;
return ;
}
}
if( (a[i] - '0' + b[i] - '0') == 1 && c[i] == '0' ){
if(andd){
andd--;
v[i] = '&';
}
else{
cout << "NO" ;
return ;
}
}
}
for(int i=0 ; i<n ; i++){
if(v[i] != '-') continue ;
if(a[i] == '0' && b[i] == '0' && c[i] == '1'){
cout << "NO" ;
return;
}
if(a[i] == '1' && b[i] == '1' && c[i] == '1'){
if(andd){
andd--;
v[i] = '&' ;
}
else{
if(orr){
orr--;
v[i] = '|' ;
}
else{
cout << "NO" ;
return ;
}
}
}
if( (a[i] - '0' + b[i] - '0') == 1 && c[i] == '1' ){
if(xorr){
xorr--;
v[i] = '^' ;
}
else{
if(orr){
orr--;
v[i] = '|' ;
}
else{
cout << "NO" ;
return ;
}
}
}
}
for(int i=0 ; i<n ; i++){
if(v[i] == '-'){
if(andd){
andd--;
v[i] = '&' ;
}
else if(orr){
orr--;
v[i] = '|' ;
}
else{
xorr--;
v[i] = '^';
}
}
}
cout << "YES\n" << v ;
}
int main(){
int t = 1 ;
// cin >> t ;
while(t--){
solve();
}
return 0 ;
}
Copy