#include using namespace std; #include using namespace atcoder; #define rep(i,n) for(int i=0; i<(n); i++) #define rep1(i,n) for(int i=1; i<=(n); i++) #define sz(x) int(x.size()) #define all(x) (x).begin(),(x).end() #define lINF ll(1e18)//LONG_LONG_MAX //ll -9223372036854775808 〜 9223372036854775807 #define iINF int(1e9+100)//INT_MAX //int -2147483648 〜 2147483647 #define yes cout << "Yes" << '\n'; #define no cout << "No" << '\n'; #define kotae cout<; using Pil=pair; using Pli=pair; using Pll=pair; using Pci=pair; using Pcl=pair; template using pqg = priority_queue,greater>; using vi=vector; using vi2=vector>; using vi3=vector>>; using vl=vector; using vl2=vector>; using vl3=vector>>; using vs=vector; using vpii=vector; using vpii2=vector>; using vpil=vector; using vpli=vector; using vpll=vector; using vpll=vector; using vpci=vector; using vpcl=vector; using Ti=tuple; using vti=vector; void coutdouble(double x) { printf("%.10f\n", x); } void coutvi(vi vec) { for (int k : vec)cout << k << ' '; cout << endl; return; } void coutvl(vl vec) { for (ll k : vec)cout << k << ' '; cout << endl; return; } void coutseti(set st) { for (int k : st)cout << k << ' '; cout << endl; return; } void coutsetl(set st) { for (ll k : st)cout << k << ' '; cout << endl; return; } void chmax(int &a, int b){ a = max(a, b); return;} void chmin(int &a, int b){ a = min(a, b); return;} void chmaxl(ll &a, ll b){ a = max(a, b); return;} void chminl(ll &a, ll b){ a = min(a, b); return;} void rev(vi &a){ reverse(all(a)); return;} template void srt(T &a){ sort(all(a)); return;} template void srtr(T &a){ sort(a.rbegin(),a.rend()); return;} ll tousa(ll a, ll n, ll d) { return (2*a + (n-1)*d)*n/2;} ll touhi(ll a, ll n, ll r) { ll sum = 1, ar = r, nr = n; while(nr){if(nr%2) sum *= ar; ar*= ar; nr/= 2;} return a*(sum-1)/(r-1);} using mint = modint998244353; using vm=vector; istream& operator>>(istream& is, mint& a) { long long x; is >> x; a = x; return is; } ostream& operator<<(ostream& os, const mint& a) { return os << a.val();} void solve(); int main() { int t = 1; cin >> t; rep(i,t) solve(); return 0; } void solve() { string r,s; int k; cin >> r >> s >> k; if(s == "Warong"){ rep(i,k) r[i] = 'A'; bool w = false; for(char c:r) if(c == 'W') w = true; if(!w){ int cnt = 0; for(char c:r) cnt += (c == '?'); if(cnt == 1) for(char &c:r) if(c == '?') c = 'W'; } }else{ bool w = false, q = false; rep(i,k) if(r[i] == 'W') w = true; else if(r[i] == '?') q = true; if(!w && !q){ for(char &c:r) c = 'A'; } w = false; int m = sz(r); rep(i,m-k) if(r[k+i] == 'W') w = true; if(w) { int wc = 0, qc = 0; rep(i,k) if(r[i] == '?') qc++; else if(r[i] == 'W') wc++; if(wc == 0 && qc == 1) rep(i,k) if(r[i] == '?') r[i] = 'W'; } } cout << r << endl; return; }