#include "stdafx.h"
#include<iostream>
using namespace std;
#define V 1500
//unsigned int f[10][V];//全局变量,自动初始化为0
unsigned int weight[10];
unsigned int value[10];
#define max(x,y) (x)>(y)?(x):(y)
//int N, M;
// //cin >> N;//物品个数
// //cin >> M;//背包容量
// //for (int i = 1; i <= N; i++)
// //{
// // cin >> weight[i] >> value[i];
// //}
// //for (int i = 1; i <= N; i++)
// //for (int j = 1; j <= M; j++)
// //{
// // if (weight[i] <= j)
// // {
// // f[i][j] = max(f[i - 1][j], f[i - 1][j - weight[i]] + value[i]);
// // }
// // else
// // f[i][j] = f[i - 1][j];
// //}
//
// //cout << f[N][M] << endl;//输出最优解
// //cout << "输出表格" << endl;
// //for (int i = 1; i <= N; i++)
// //{
// // for (int j = 1; j <= M; j++)
// // {
// // cout << f[i][j] << " ";
// // }
// // cout << endl;
// //}
// system("pause");
// return 0;
//}
#include "stdafx.h"
#include<iostream>
#define V 1500
unsigned int f[V];//全局变量,自动初始化为0
using namespace std;
//unsigned int f[10][V];//全局变量,自动初始化为0
unsigned int weight[10];
unsigned int value[10];
#define max(x,y) (x)>(y)?(x):(y)
int _tmain(int argc, _TCHAR* argv[])
{
int N, M;
cin >> N;//物品个数
cin >> M;//背包容量
for (int i = 1; i <= N; i++)
{
cin >> weight[i] >> value[i];
}
for (int i = 1; i <= N; i++)
for (int j = M; j >=1; j--)
{
if (weight[i] <= j)
{
f[j] = max(f[j], f[j - weight[i]] + value[i]);
}
}
for (int j = M; j >= 1; j--){
cout << f[j] << endl;//输出最优解
}