#include using namespace std; using ll = long long; #define ALL(a) (a).begin(), (a).end() #define Yes cout << "Yes" << endl #define No cout << "No" << endl #define el '\n' using pri_que = priority_queue, greater>; const ll INF = 1LL << 60; const ll MOD = 1000000007; /* 1.自力で考える(15分を目安) 1.5 どういう方針で解くかコメントを残す。 2.分からなければ解説を読む 3.解説ページを閉じる(重要) 4.何も見ずに実装する。 */ /* 先頭がAかBのとき先手は終了宣言するしかない(同じ場所は選べないので下をどれだけいじっても改善しない。) 先頭がCの時 先手はi=1をCからAに変える。 後手は二文字めがCなら終了宣言するしかない(2文字目はいじれないので3文字目以下をいじるが、2文字目をAに変えられたら意味がない。) C C以外 C C以外の並びでゲームが進む その他は終了宣言。 同じ場所を進められるのが抜けていた。 Cに変えられるのは損なのでCACとかが間違っていた。 */ int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); int T; cin >> T; for (; T--;) { int N; cin >> N; string S; cin >> S; int len_S = ssize(S); for (int i = 0; i < len_S; i++) { // 先手はCをAに変える。 if (i % 2 == 0) { if (S[i] == 'C' && S[i - 1] != 'B') S[i] = 'A'; else break; } // 後手はC以外が来るならそれを次に進める。 else if (i % 2 == 1) { if (S[i] != 'C') S[i] = S[i] + 1; else break; } } cout << S << endl; } }