Language: C++

#include <bits/stdc++.h>
using namespace std;

int main(void) {
    int64_t N,ABC[3];
    string result = "";

    cin >> N >> ABC[0] >> ABC[1] >> ABC[2];
    vector<string> s(N); 

    for(int i=0;i<N;i++) {
        cin >> s[i];
    }

    for(int i=0;i<N;i++) {
        if((ABC[s[i][0] - 'A'] == 0) && (ABC[s[i][1] - 'A'] == 0)) {
            result = "No";
            break;
        }

        // 一緒だったら次を見る
        if(ABC[s[i][0] - 'A'] == ABC[s[i][1] - 'A'] ) {
            string s_tmp = s[i];
            for(int j=i+1;j<s.size();j++) {
                if(s_tmp != s[j]) {
                    // 一致しないほうが必ず含まれる
                    if((s[j][0] != s[i][0]) && (s[j][0] != s[i][1]) {
                        if(ABC[s[j][0] - 'A'] > ABC[s[j][1] - 'A']) {
                            // 次で足されるので
                            ABC[3 ^ ((s[j][0] - 'A') | (s[j][1] - 'A'))]++;
                            s[j][1]--;
                            result.push_back((3 ^ ((s[j][0] - 'A') | (s[j][1] - 'A'))) + 'A');
                            result.push_back('\n');
                        } else {
                            // 次で引かれるので
                            ABC[3 ^ ((s[j][0] - 'A') | (s[j][1] - 'A'))]--;
                            s[j][1]++;
                            result.push_back(s[j][1]);
                            result.push_back('\n');
                        }
                    } else {
                        if(ABC[s[j][1] - 'A'] > ABC[s[j][0] - 'A']) {
                            // 次で足されるので
                            ABC[3 ^ ((s[j][0] - 'A') | (s[j][1] - 'A'))]++;
                            s[j][0]--;
                            result.push_back((3 ^ ((s[j][0] - 'A') | (s[j][1] - 'A'))) + 'A');
                            result.push_back('\n');
                        } else {
                            // 次で引かれるので
                            ABC[3 ^ ((s[j][0] - 'A') | (s[j][1] - 'A'))]--;
                            s[j][0]++;
                            result.push_back(s[j][0]);
                            result.push_back('\n');
                        }
                    }
                    break;
                }
            }
        }
        else if(ABC[s[i][0] - 'A'] > ABC[s[i][1] - 'A']) {
            ABC[s[i][1] - 'A']++;
            ABC[s[i][0] - 'A']--;
            result.push_back(s[i][1]);
            result.push_back('\n');
        } else {
            ABC[s[i][0] - 'A']++;
            ABC[s[i][1] - 'A']--;
            result.push_back(s[i][0]);
            result.push_back('\n');
        }
    }
    
    if(strncmp(&result[0], "No", 2) == 0){
        cout << result << "\n";
    } else {
        cout << "Yes\n";
        cout << result;
    }
    return 0;
}


Compiler output:
a.cc: In function 'int main()':
a.cc:27:68: error: expected ';' before '{' token
   27 |                     if((s[j][0] != s[i][0]) && (s[j][0] != s[i][1]) {
      |                                                                    ^~
      |                                                                    ;
a.cc:41:23: error: expected primary-expression before 'else'
   41 |                     } else {
      |                       ^~~~
a.cc:41:22: error: expected ')' before 'else'
   41 |                     } else {
      |                      ^~~~~
      |                      )
a.cc:27:23: note: to match this '('
   27 |                     if((s[j][0] != s[i][0]) && (s[j][0] != s[i][1]) {
      |                       ^