#include <bits/stdc++.h>
using namespace std;
const int mod = 1e9 + 7;
const int inf = 0x3f3f3f3f;
const int N = 1e6 + 5;
long long gcd(long long a, long long b) { return b ? gcd(b, a % b) : a; }
long long qmi(long long a, long long b) {
  long long res = 1;
  a %= mod;
  assert(b >= 0);
  for (; b; b >>= 1) {
    if (b & 1) res = res * a % mod;
    a = a * a % mod;
  }
  return res;
}
int n;
int a[N];
int main() {
  int _;
  for (scanf("%d", &_); _; _--) {
    scanf("%d", &n);
    for (int i = 1; i <= n; i++) scanf("%d", &a[i]);
    int flag = 0;
    for (int i = 2; i <= n; i++)
      if (a[i] != a[i - 1]) {
        flag = true;
        break;
      }
    if (!flag) {
      puts("1");
      for (int i = 1; i <= n; i++) printf("1 ");
      puts("");
      continue;
    }
    if (n % 2 == 0) {
      puts("2");
      for (int i = 1; i <= n; i++) printf("%d ", i % 2 + 1);
      puts("");
      continue;
    }
    flag = 0;
    for (int i = 2; i <= n; i++)
      if (a[i] == a[i - 1]) {
        flag = true;
        break;
      }
    if (flag) {
      puts("2");
      printf("2 ");
      int d = 0;
      for (int i = 2; i <= n; i++) {
        if (a[i] == a[i - 1] && d == 0) d++;
        printf("%d ", (i - d) % 2 + 1);
      }
      puts("");
      continue;
    }
    if (a[1] == a[n]) {
      puts("2");
      for (int i = 1; i <= n; i++) printf("%d ", i % 2 + 1);
      puts("");
      continue;
    }
    puts("3");
    for (int i = 1; i < n; i++) printf("%d ", i % 2 + 1);
    puts("3");
  }
  return 0;
}
