#include using namespace std; const int N = 1100; int f[N][N]; int n, m; int v[N], w[N]; int main() { scanf("%d %d", &n, &m); for (int i = 1; i <= n; i++) scanf("%d %d", &v[i], &w[i]); for (int i = n; i >= 1; i--) for (int j = 0; j <= m; j++) { f[i][j] = f[i + 1][j]; if (j >= v[i]) f[i][j] = max(f[i][j], f[i + 1][j - v[i]] + w[i]); } int j = m; for (int i = 1; i <= n; i++) if (j >= v[i] && f[i][j] == (f[i + 1][j - v[i]] + w[i])) { printf("%d ", i); j -= v[i]; } return 0; }