#include <bits/stdc++.h>
using namespace std;
const int sz = 2e5 + 5;
int a[sz];
map<int, int> mp;
int main() {
  int tcs;
  cin >> tcs;
  while (tcs--) {
    int n;
    cin >> n;
    mp.clear();
    for (int i = 1; i <= n; i++) scanf("%d", &a[i]), mp[a[i]] = 1;
    if (mp.size() == 1) {
      puts("1");
      for (int i = 0; i < n; i++) printf("1 ");
      puts("");
    } else {
      if (a[1] != a[n] && n % 2) {
        bool done = 0;
        for (int i = 1; i <= n; i++) {
          if (a[i] == a[i - 1]) {
            puts("2");
            for (int j = 1; j < i; j++) {
              if (j & 1)
                printf("1 ");
              else
                printf("2 ");
            }
            for (int j = i; j <= n; j++) {
              if (j & 1)
                printf("2 ");
              else
                printf("1 ");
            }
            puts("");
            done = 1;
            break;
          }
        }
        if (!done) {
          puts("3");
          printf("3 ");
          for (int i = 1; i < n; i++) {
            if (i & 1)
              printf("1 ");
            else
              printf("2 ");
          }
          puts("");
        }
      } else {
        puts("2");
        for (int i = 0; i < n; i++) {
          if (i & 1)
            printf("1 ");
          else
            printf("2 ");
        }
        puts("");
      }
    }
  }
}
