#!/usr/bin/env python3

n = int(input())
E = [[] for _ in range(n)]
cur = []
for i in range(n):
    (f, h) = map(int, input().split())
    while f:
        if not cur[-1][0]:
            cur.pop()
            continue
        E[i].append(cur[-1][1])
        E[cur[-1][1]].append(i)
        x = min(f, cur[-1][0])
        cur[-1][0] -= x
        f -= x
    cur.append([h, i])

V = list(range(n))
V.reverse()
col = [0]*n
for v in V:
    forbidden = set([col[j] for j in E[v] if col[j]])
    col[v] = 1
    while col[v] in forbidden: col[v] += 1

print(max(col))
print(' '.join(map(str, col)))

