On a history lesson the teacher asked Vasya to name the dates when n famous events took place. He doesn't remembers the exact dates but he remembers a segment of days [li, ri] (inclusive) on which the event could have taken place. However Vasya also remembers that there was at most one event in one day. Help him choose such n dates of famous events that will fulfill both conditions. It is guaranteed that it is possible.

Input

The first line contains one integer n (1 ≤ n ≤ 100) — the number of known events. Then follow n lines containing two integers li and ri each (1 ≤ li ≤ ri ≤ 107) — the earliest acceptable date and the latest acceptable date of the i-th event.

Output

Print n numbers — the dates on which the events took place. If there are several solutions, print any of them. It is guaranteed that a solution exists.

Examples

Input

3
1 2
2 3
3 4


Output

1 2 3 


Input

2
1 3
1 3


Output

1 2

Difficulty: HARD

Solutions:
from sys import stdin
inFile = stdin
tokens = []
tokens_next = 0

def next_str():
	global tokens, tokens_next
	while tokens_next >= len(tokens):
		tokens = inFile.readline().split()
		tokens_next = 0
	tokens_next += 1
	return tokens[tokens_next - 1]

def nextInt():
	return int(next_str())
n = nextInt()
intervals = [(nextInt(), nextInt(), i) for i in range(n)]
intervals.sort(key=lambda x: (x[1], x[0]))
seen = set()
for i in range(n):
	cur = intervals[i][0]
	while cur in seen:
		cur += 1
	seen.add(cur)
	intervals[i] = (intervals[i][0], intervals[i][1], intervals[i][2], cur)
intervals.sort(key=lambda x: x[2])
for i in range(n):
	print(intervals[i][3], end=' ')
print()


n = int(input())
intervals = [list(map(int, input().split())) for i in range(n)]
intervals = list(enumerate(intervals))
intervals.sort(key=lambda x: (x[1][1], x[1][0]))
ans = [0] * n
vis = set()
for (idx, (l, _)) in intervals:
	while l in vis:
		l += 1
	vis.add(l)
	ans[idx] = l
print(' '.join(list(map(str, ans))))


n = int(input())
seg = []
for i in range(n):
	(l, r) = map(int, input().split())
	seg.append((l, r, i))
seg.sort(key=lambda tup: (tup[1], tup[0], tup[2]))
assigned = set()
ans = [0] * n
for i in range(n):
	for j in range(seg[i][0], seg[i][1] + 1, 1):
		if j not in assigned:
			ans[seg[i][2]] = j
			assigned.add(j)
			break
for i in range(n):
	print(ans[i], end=' ')


n = int(input())
(a, ans, b) = ([], [0] * n, [0] * 10000001)
for i in range(n):
	(L, R) = map(int, input().split())
	a.append([R, L, i])
a.sort()
for z in a:
	(R, L, i) = z
	for j in range(L, R + 1):
		if b[j] == 0:
			b[j] = 1
			ans[i] = j
			break
print(*ans)