#include #include #include using namespace std; using namespace atcoder; using ll = long long; //#define endl "\n"; int main(){ ll Q; cin >> Q; for(int q = 1; q <= Q; q++){ string R, S; cin >> R; cin >> S; ll K; cin >> K; ll w = 0, a = 0; fenwick_tree fwA(R.size()), fwW(R.size()); for(int i = 0; i < R.size(); i++){ if(R[i] == 'W') fwW.add(i, 1); if(R[i] == 'A') fwA.add(i, 1); } vector ans(R.size()); for(int i = 0; i < R.size(); i++){ if(R[i] == '?'){ if(S == "Warong"){ bool a = false, w = false; //A fwA.add(i, 1); if(fwW.sum(0, K) == 0 && fwA.sum(0, R.size()) + fwW.sum(0, R.size()) < R.size()) a = true; fwA.add(i, -1); //W fwW.add(i, 1); if(fwW.sum(0, K) == 0 && fwA.sum(0, R.size()) + fwW.sum(0, R.size()) < R.size()) w = true; fwW.add(i, -1); if(a && !w){ ans[i] = 'A'; fwA.add(i, 1); }else if(!a && w){ ans[i] = 'W'; fwW.add(i, 1); }else{ ans[i] = '?'; } }else{ bool a = false, w = false; //A fwA.add(i, 1); if(fwW.sum(0, K) > 0 || fwW.sum(0, R.size()) == 0) a = true; fwA.add(i, -1); //W fwW.add(i, 1); if(fwW.sum(0, K) > 0 || (fwA.sum(0, K) + fwW.sum(0, K) < K)) w = true; fwW.add(i, -1); if(a && !w){ ans[i] = 'A'; fwA.add(i, 1); }else if(!a && w){ ans[i] = 'W'; fwW.add(i, 1); }else{ ans[i] = '?'; } } }else{ ans[i] = R[i]; } } for(int i = 0; i < R.size(); i++) cout << ans[i]; cout << endl; } return 0; }