#include <bits/stdc++.h>
using namespace std;
const int N = 1e3 + 9, M = 1e5 + 9;
int col[2][N][N], id[N][N], ans[M], n, m, k, sz;
void dfs(int p, int u, int v, int c1, int c2) {
  int tmp = col[p ^ 1][v][c1];
  col[p][u][c1] = v, col[p ^ 1][v][c1] = u;
  if (!tmp) {
    col[p ^ 1][v][c2] = 0;
    return;
  }
  dfs(p ^ 1, v, tmp, c2, c1);
}
int main() {
  cin >> n >> m >> k;
  for (int i = 1; i <= k; i++) {
    int u, v;
    cin >> u >> v;
    id[u][v] = i;
    int c1 = 1, c2 = 1;
    while (col[0][u][c1]) c1++;
    while (col[1][v][c2]) c2++;
    sz = max(sz, max(c1, c2));
    if (c1 == c2)
      col[0][u][c1] = v, col[1][v][c1] = u;
    else
      dfs(0, u, v, c1, c2);
  }
  cout << sz << '\n';
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= sz; j++)
      if (col[0][i][j]) ans[id[i][col[0][i][j]]] = j;
  for (int i = 1; i <= k; i++) cout << ans[i] << " ";
}
