/* -*- coding: utf-8 -*- * * 3685.cc: No.3685 繝ッ繝ュ繝ウ繧ー繧「繝ウ繧オ繝シ繧・s縺托シ・- yukicoder */ #include #include #include #include using namespace std; /* constant */ const int MAX_N = 200000; /* typedef */ using tp3 = tuple; /* global variables */ char r[MAX_N + 4], s[32]; int as[MAX_N]; /* subroutines */ tp3 countc(char t[], int l, int r) { int ca = 0, cw = 0, cq = 0; for (int i = l; i < r; i++) { if (t[i] == 'A') ca++; else if (t[i] == 'W') cw++; else cq++; } return {ca, cw, cq}; } /* main */ int main() { int tn; scanf("%d", &tn); while (tn--) { int k; scanf("%s%s%d", r, s, &k); int n = strlen(r); if (s[0] == 'W') { // Warong for (int i = 0; i < k; i++) r[i] = 'A'; auto [ca, cw, cq] = countc(r, k, n); if (cw == 0 && cq == 1) for (int i = k; i < n; i++) if (r[i] == '?') { r[i] = 'W'; break; } } else { // Not Warong auto [ca0, cw0, cq0] = countc(r, 0, k); auto [ca1, cw1, cq1] = countc(r, k, n); if (ca0 == k) { for (int i = k; i < n; i++) r[i] = 'A'; } else if (cw1 > 0 && cw0 == 0 && cq0 == 1) { for (int i = 0; i < k; i++) if (r[i] == '?') { r[i] = 'W'; break; } } } puts(r); } return 0; }