#!/usr/bin/env python3
import random
import heapq

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])

col = [0]*n
Q = []
for i in range(n):
    if col[i]: continue
    Q.append(i)
    col[i] = 1
    while Q:
        u = Q.pop()
        while any(col[v]==col[u] for v in E[u]):
            col[u] += 1
        for v in E[u]:
            if not col[v]:
                col[v] = 1
                Q.append(v)


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

