#include <bits/stdc++.h>
using namespace std;
const int N = 1000, M = 100000;
int n, m, sk, x[M + 9], y[M + 9], deg[N * 2 + 9];
void into() {
  scanf("%d%d%d", &n, &m, &sk);
  for (int i = 1; i <= sk; ++i) {
    scanf("%d%d", &x[i], &y[i]);
    y[i] += n;
    ++deg[x[i]];
    ++deg[y[i]];
  }
}
int col[N * 2 + 9][N + 9], ans;
void Get_col() {
  for (int i = 1; i <= n + m; ++i) ans = max(ans, deg[i]);
  for (int i = 1; i <= sk; ++i) {
    int c0 = 1, c1 = 1;
    for (; col[x[i]][c0]; ++c0)
      ;
    for (; col[y[i]][c1]; ++c1)
      ;
    col[x[i]][c0] = y[i];
    col[y[i]][c1] = x[i];
    if (c0 == c1) continue;
    for (int c = c1, k = y[i]; k; k = col[k][c], c ^= c0 ^ c1)
      swap(col[k][c0], col[k][c1]);
  }
}
void work() { Get_col(); }
void outo() {
  printf("%d\n", ans);
  for (int i = 1; i <= sk; ++i)
    for (int j = 1; j <= ans; ++j)
      if (col[x[i]][j] == y[i]) {
        printf("%d ", j);
        break;
      }
  puts("");
}
int main() {
  into();
  work();
  outo();
  return 0;
}
