#include <bits/stdc++.h>
using namespace std;
struct T {
  int num, bh, set;
} px[222];
bool cmp(T f, T b) { return f.num < b.num; }
bool cmp2(T f, T b) { return f.bh < b.bh; }
int n, i, ms[2], mm[2];
int main() {
  scanf("%d", &n);
  n <<= 1;
  for (i = 0; i < n; i++) {
    scanf("%d", &px[i].num);
    px[i].bh = i;
  }
  sort(px, px + n, cmp);
  for (i = 1; i < n; i++)
    if ((px[i].num & 255) == (px[i - 1].num & 255)) {
      px[i].num |= 256;
      px[i - 1].num |= 256;
    }
  sort(px, px + n, cmp);
  ms[0] = mm[0] = 0;
  ms[1] = mm[1] = 0;
  for (i = 0; i < n; i++) {
    if (px[i].num > mm[i & 1]) ms[i & 1]++;
    mm[i & 1] = px[i].num;
    px[i].set = i & 1;
  }
  printf("%d\n", ms[0] * ms[1]);
  sort(px, px + n, cmp2);
  for (i = 0; i < n; i++) printf("%d ", px[i].set + 1);
}
