N, W = map(int, input().split()) w = [0] * N v = [0] * N for i in range(N): w[i], v[i] = map(int, input().split()) dp = [[0]*(W+1) for i in range(N+1)] for i in range(1, N+1): for j in range(0, W+1): dp[i][j] = max(dp[i][j], dp[i-1][j]) if j >= w[i-1]: dp[i][j] = max(dp[i][j], dp[i-1][j-w[i-1]]+v[i-1]) for X in range(1, W+1): print(dp[N][W]-dp[N][W-X]+1)