import sys,math #if len(sys.argv)==2:sys.stdin=open(sys.argv[1]) from collections import defaultdict,deque from itertools import combinations,permutations,accumulate,product from bisect import bisect,bisect_left,bisect_right from heapq import heappop,heappush,heapify #from sortedcontainers import SortedList,SortedSet def input(): return sys.stdin.readline().rstrip() def ii(): return int(input()) def ms(): return map(int, input().split()) def li(): return list(map(int,input().split())) #//////////////////////////////////// N,X = ms() ans = [0]*(X+1) for _ in range(N): a,b = ms() ans[a] = max(ans[a],b) tmp = b-1 for a2 in reversed(range(1,a)): ans[a2] = max(ans[a2],tmp) tmp -= 1 if tmp==0: break tmp = b-1 for a2 in range(a+1,X+1): ans[a2] = max(ans[a2],tmp) tmp -= 1 if tmp==0: break print(*ans[1:])