#include <bits/stdc++.h>
using namespace std;
vector<int> berat(102);
vector<int> harga(102);
int b;
int dp[2002][102];
int f(int a, int z) {
if (z == b+1 || a == 0)
return 0;
if (dp[a][z] == -1) {
dp[a][z] = f(a, z+1);
if (a >= berat[z]) {
int pilih = harga[z] + f(a - berat[z], z+1);
dp[a][z] = max(dp[a][z], pilih);
}
}
return dp[a][z];
}
int main() {
memset(dp, -1, sizeof dp);
int a;
cin >> a >> b;
for (int i = 1; i <= b; i++) {
cin >> berat[i] >> harga[i];
}
int teringan = a;
for (int i = 0; i <= a; i++) {
if (f(i, 1) == f(a, 1)) {
teringan = i;
break;
}
}
for (int i = 1; i <= b; i++) {
if (teringan >= berat[i] && f(teringan, i) == f(teringan - berat[i], i+1) + harga[i]) {
cout << i << '\n';
teringan -= berat[i];
}
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp2ZWN0b3I8aW50PiBiZXJhdCgxMDIpOwp2ZWN0b3I8aW50PiBoYXJnYSgxMDIpOwppbnQgYjsKaW50IGRwWzIwMDJdWzEwMl07CgppbnQgZihpbnQgYSwgaW50IHopIHsKICAgIGlmICh6ID09IGIrMSB8fCBhID09IDApCiAgICAgICAgcmV0dXJuIDA7CgoJaWYgKGRwW2FdW3pdID09IC0xKSB7CgkJZHBbYV1bel0gPSBmKGEsIHorMSk7CgkJaWYgKGEgPj0gYmVyYXRbel0pIHsKCQkJaW50IHBpbGloID0gaGFyZ2Fbel0gKyBmKGEgLSBiZXJhdFt6XSwgeisxKTsKCQkJZHBbYV1bel0gPSBtYXgoZHBbYV1bel0sIHBpbGloKTsKCQl9Cgl9CgkKCXJldHVybiBkcFthXVt6XTsKfQoKaW50IG1haW4oKSB7CgltZW1zZXQoZHAsIC0xLCBzaXplb2YgZHApOwogICAgaW50IGE7CiAgICBjaW4gPj4gYSA+PiBiOwoKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IGI7IGkrKykgewogICAgICAgIGNpbiA+PiBiZXJhdFtpXSA+PiBoYXJnYVtpXTsKICAgIH0KCglpbnQgdGVyaW5nYW4gPSBhOwoJZm9yIChpbnQgaSA9IDA7IGkgPD0gYTsgaSsrKSB7CgkJaWYgKGYoaSwgMSkgPT0gZihhLCAxKSkgewoJCQl0ZXJpbmdhbiA9IGk7CgkJCWJyZWFrOwoJCX0KCX0KICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IGI7IGkrKykgewogICAgCWlmICh0ZXJpbmdhbiA+PSBiZXJhdFtpXSAmJiBmKHRlcmluZ2FuLCBpKSA9PSBmKHRlcmluZ2FuIC0gYmVyYXRbaV0sIGkrMSkgKyBoYXJnYVtpXSkgewogICAgCQljb3V0IDw8IGkgPDwgJ1xuJzsKICAgIAkJdGVyaW5nYW4gLT0gYmVyYXRbaV07CiAgICAJfQogICAgfQoKICAgIHJldHVybiAwOwp9