Hide

Problem C
Knapsack

Implement a solution to the classic knapsack problem. You are given a knapsack that can hold up to a certain weight (its capacity), and several items you may choose to put in the knapsack. Each item has a weight and a value. Choose a subset of the items (which could be all of them, or none of them) having the greatest value that fit into the knapsack (i.e. the sum of the weights of the items you choose must be less than or equal to the knapsack capacity).

Input

The input consists of between $1$ and $30$ test cases. Each test case begins with an integer $1 \le C \le 2\, 000$, giving the capacity of the knapsack, and an integer $1 \le n \le 2\, 000$, giving the number of objects. Then follow $n$ lines, each giving the value and weight of the $n$ objects. Both values and weights are integers between $1$ and $10\, 000$.

Output

For each test case, output a line containing the number of items chosen, followed by a line containing the indices of the chosen items (the first item has index $0$, the second index $1$, and so on). The indices can be given in any order.

Sample Input 1 Sample Output 1
5 3
1 5
10 5
100 5
6 4
5 4
4 3
3 2
2 1
1
2
3
1 2 3

Please log in to submit a solution to this problem

Log in