N,W=map(int, input().split()) A=[] for i in range(N): w,v=map(int, input().split()) A.append((w,v)) #重さがiのときの最大価値 dp=[-1]*(W+1) dp[0]=0 for w,v in A: for ww in range(W,-1,-1): if ww+w<=W and dp[ww]!=-1: dp[ww+w]=max(dp[ww+w],dp[ww]+v) for i in range(1,W+1): dp[i]=max(dp[i-1],dp[i]) d=dp[-1]+1 for i in range(W): print(d-dp[-2-i])