f[i][j]=max(f[i-1][j],f[i-1][j-w[i]]+v[i]);
#include <iostream>
#include <algorithm>
#include <cmath>
#include <cstdio>
#include <cstring>
#include <cstdlib>
using namespace std;
int N,V;
//4 20
//2 56546
//19 351
//7 2563
//18 23212
//
//输出:
//
//79758
typedef long long ll;
struct goods {
ll w;
ll val;
};
int main() {
scanf("%d%d",&N,&V);
goods good[N];
for(int i=1; i<=N; i++) {
scanf("%ld%ld",&good[i].w,&good[i].val);
}
ll dis[N+1][V+1];
for(int i=1; i<=N; i++) {
for(int j=1; j<=V; j++) {
if(good[i].w<=j&&dis[i-1][j]<dis[i-1][j-good[i].w]+good[i].val)
dis[i][j]=dis[i-1][j-good[i].w]+good[i].val;
else
dis[i][j]=dis[i-1][j];
}
}
for(int i=0; i<=N; i++) {
for(int j=0; j<=V; j++) {
printf("%d\t ",dis[i][j]);
}
printf("\n");
}
}