#include <bits/stdc++.h>
using namespace std;
int g[220];
int mark[2100];
int cnt[220];
int flag[220];
int mark1[220], mark2[220];
int main() {
  int n;
  scanf("%d", &n);
  int a = 0, b = 0;
  int cnta = 0, cntb = 0;
  for (int i = 1; i <= 2 * n; i++) {
    scanf("%d", &g[i]);
    cnt[g[i]]++;
  }
  int tmp = 1, key = -1;
  for (int i = 10; i <= 99; i++) {
    if (cnt[i] == 0) continue;
    if (cnt[i] == 1) {
      key = i;
    } else if (cnt[i] % 2 != 0) {
      flag[i] = tmp;
      if (tmp == 1)
        tmp = 2;
      else
        tmp = 1;
    } else {
      flag[i] = 1;
    }
  }
  if (tmp == 1) key = -1;
  tmp = 1;
  for (int i = 1; i <= 2 * n; i++) {
    if (cnt[g[i]] == 1) {
      if (key == g[i]) {
        mark[i] = 2;
      } else {
        mark[i] = tmp;
        if (tmp == 1)
          tmp = 2;
        else
          tmp = 1;
      }
    } else {
      mark[i] = flag[g[i]];
      if (flag[g[i]] == 1)
        flag[g[i]] = 2;
      else
        flag[g[i]] = 1;
    }
  }
  int cnt = 0;
  int cnt1 = 0;
  for (int i = 1; i <= 2 * n; i++) {
    if (mark[i] == 1) {
      if (mark1[g[i]] == 0) {
        mark1[g[i]] = 1;
        cnt++;
      }
    } else {
      if (mark2[g[i]] == 0) {
        mark2[g[i]] = 1;
        cnt1++;
      }
    }
  }
  printf("%d\n", cnt * cnt1);
  for (int i = 1; i <= 2 * n; i++) printf("%d ", mark[i]);
  return 0;
}
