#if __has_include() #include #else #include #include #endif using namespace std; #define rep(i, n) for (long long i = 0; i < (long long)(n); i++) #define printYesNo(is_ok) puts(is_ok ? "Yes" : "No") #define SORT(v) sort(v.begin(), v.end()) #define RSORT(v) sort(v.rbegin(), v.rend()) #define REVERSE(v) reverse(v.begin(), v.end()) template void printVector(const Container &v, char delimiter = ' ') { for (auto itr = v.begin(); itr != v.end(); itr++) { if (itr != v.begin()) { cout << delimiter; } cout << *itr; } cout << endl; } template void printlnVector(const Container &v) { printVector(v, '\n'); } void solve() { string R, S; cin >> R >> S; int K; cin >> K; string ans = R; if (S == "Warong") { rep(i, K) { ans[i] = 'A'; } int W_cnt = count(ans.begin(), ans.end(), 'W'); int hatena_cnt = count(ans.begin(), ans.end(), '?'); if (W_cnt == 0 && hatena_cnt == 1) { rep(i, ans.size()) { if (ans[i] == '?') { ans[i] = 'W'; } } } } else { bool jouken1 = true; rep(i, K) { if (ans[i] != 'A') { jouken1 = false; } } bool jouken2 = false; rep(i, ans.size()) { if (ans[i] == 'W') { jouken2 = true; } } if (jouken1) { for (int i = K; i < ans.size(); i++) { if (ans[i] == '?') { ans[i] = 'A'; } } } if (jouken2) { int W_cnt = count(ans.begin(), ans.begin() + K, 'W'); int hatena_cnt = count(ans.begin(), ans.begin() + K, '?'); if (W_cnt == 0 && hatena_cnt == 1) { rep(i, K) { if (ans[i] == '?') { ans[i] = 'W'; } } } } } cout << ans << endl; } int main() { int T = 1; cin >> T; while (T--) { solve(); } return 0; }