func_code_string: #include <bits/stdc++.h>   using namespace std;   using lld = long long;   using pi = pair<int, int>;   using pl = pair<lld, lld>;   using vi = vector<int>;   using vvi = vector<vector<int>>;   using vb = vector<bool>;   using vc = vector<char>;   using vl = vector<lld>;   using vp = vector<pi>;   using vs = vector<string>;   using si = stack<int>;   using qi = queue<int>;   using qp = queue<pi>;   using pqi = priority_queue<int>;   const lld mod = 998244353;   int n, mx;   vi t, c, adj;   vb chk;   void input() {     t.clear();     c.clear();     adj.clear();     chk.clear();     cin >> n;     t = vi(n);     c = vi(n);     adj = vi(n, -1);     chk = vb(n);     for (int i = 0; i < n; ++i) cin >> t[i];   }   void go(int cur) {     chk[cur] = true;     int nxt = adj[cur];     if (nxt == -1) return;     if (c[nxt]) {       c[cur] = c[nxt] == 1 ? 2 : 1;       return;     }     c[nxt] = c[cur] == 1 ? 2 : 1;     int t = c[nxt];     go(nxt);     if (t != c[nxt]) {       c[cur] = c[nxt] == 1 ? 2 : 1;     }   }   void solve() {     for (int i = 0; i < n; ++i)       if (t[i] != t[(i + 1) % n]) adj[i] = (i + 1) % n;     int cnt = 0;     for (int i = 0; i < n; ++i) {       if (chk[i]) continue;       c[i] = 1;       go(i);       cnt++;     }     if (cnt == 1)       if (t[n - 1] != t[0] && c[n - 1] == c[0]) c[n - 1] = 3;     int mx = 1;     for (int i = 0; i < n; ++i) mx = max(mx, c[i]);     cout << mx <<   n ;     for (int i = 0; i < n; ++i) cout << c[i] <<    ;     cout <<   n ;   }   int main() {     cin.tie(nullptr);     ios_base::sync_with_stdio(false);     int tc;     cin >> tc;     while (tc--) {       input();       solve();     }   }   