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 1C2000, giving the capacity of the knapsack, and an integer 1n2000, 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 10000.

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
Hide

Please log in to submit a solution to this problem

Log in