class Input_kyopro: def II(self): return int(input()) def MI(self): return map(int,input().split()) def MS(self): return map(str,input().split()) def LMI(self): return list(self.MI()) def LMS(self): return list(self.MS()) def LLI(self,N): return [self.LMI() for _ in range(N)] def LLS(self,N): return [self.LMS() for _ in range(N)] def LS(self,N): return [input() for _ in range(N)] def LSL(self,N): return [list(input()) for _ in range(N)] def LI(self,N): return [self.II() for _ in range(N)] I=Input_kyopro() #入力 N,X=I.MI() ab=I.LLI(N) ruiseki=[0]*(X+1) for a,b in ab: count=b-1 for i in range(a-1,max(-1,a-b),-1): ruiseki[i]=max(ruiseki[i],count) count-=1 count=b for i in range(a,min(X+1,a+b+1)): ruiseki[i]=max(ruiseki[i],count) count-=1 print(*ruiseki[1:])