#nullable enable #region var (_input, _iter) = (Array.Empty(), 0); T I() where T : IParsable { while (_iter >= _input.Length) (_input, _iter) = (Console.ReadLine()!.Trim().Split(' '), 0); return T.Parse(_input[_iter++], null); } #endregion const char W = 'W'; const char A = 'A'; const char X = '?'; var ans = new List(); var t = I(); while (t-- > 0) { var r = I(); var warong = I() == "Warong"; var k = I(); var n = r.Length; var tns = r.ToCharArray(); var (w1, a1, x1) = (0, 0, 0); var (w2, a2, x2) = (0, 0, 0); for (var i = 0; i < k; i++) { var c = r[i]; if (c == W) w1++; if (c == A) a1++; if (c == X) x1++; } for (var i = k; i < n; i++) { var c = r[i]; if (c == W) w2++; if (c == A) a2++; if (c == X) x2++; } if (warong) { for (var i = 0; i < k; i++) tns[i] = A; if (w2 == 0 && x2 == 1) for (var i = k; i < n; i++) if (tns[i] == X) tns[i] = W; } else { if (w1 + w2 > 0) { if (a1 == k - 1 && x1 == 1) for (var i = 0; i < k; i++) if (tns[i] == X) tns[i] = W; } else if (a1 == k) { for (var i = k; i < n; i++) if (tns[i] == X) tns[i] = A; } else { } } ans.Add(new string(tns)); } Console.WriteLine(string.Join(Environment.NewLine, ans));