#include <bits/stdc++.h>
#define ll long long
#define ld long double
#define pii pair<int,int>
#define pll pair<ll,ll>
#define plll pair<ll,pll>
#define tull tuple<ll,ll,ll>
#define pb push_back
#define f first
#define endl "\n"
#define se second
#define piii pair<int,pii>
#define id1 id<<1
#define id2 (id<<1)+1
#define MASK(i) (1<<i)
#define TIME "\nTime elapsed : "<<(double)clock()/1000<<" ms"
#define all(x) x.begin(),x.end()
#define fast ios_base::sync_with_stdio(0); cin.tie(0);cout.tie(0);
using namespace std;
const ll mod = 1e9 + 7;
const ll INF = 1e16;
const ll maxn = 1e6 + 5;
const ll maxs = 1e7;
const ll dx[] = { -1, 0, 0, 1 };
const ll dy[] = { 0, -1, 1, 0 };
ll n,k;
ll res = LLONG_MIN;
ll a[maxn],b[maxn];
ll bt[maxn];
vector<ll> ans;
void tv()
{
ans.clear();
for(int i = 1; i <= n; ++i){
if(bt[i] == 1){
ans.pb(i);
}
}
}
void ql(ll i,ll sum,ll w)
{
if(i == n){
if(res <= sum){
res = sum;
tv();
}
return;
}
if(w + a[i + 1] <= k){
bt[i + 1] = 1;
ql(i + 1,sum + b[i + 1],w + a[i + 1]);
}
if(w <= k){
bt[i + 1] = 0;
ql(i + 1,sum,w);
}
}
int main()
{
fast
cin >> n >> k;
for(int i = 1; i <= n; ++i){
cin >> a[i] >> b[i];
}
ql(0,0,0);
sort(all(ans));
cout << ans.size() << endl;
for(ll i : ans){
cout << i << ' ';
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgbGQgbG9uZyBkb3VibGUKI2RlZmluZSBwaWkgcGFpcjxpbnQsaW50PgojZGVmaW5lIHBsbCBwYWlyPGxsLGxsPgojZGVmaW5lIHBsbGwgcGFpcjxsbCxwbGw+CiNkZWZpbmUgdHVsbCB0dXBsZTxsbCxsbCxsbD4KI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBmIGZpcnN0CiNkZWZpbmUgZW5kbCAiXG4iCiNkZWZpbmUgc2Ugc2Vjb25kCiNkZWZpbmUgcGlpaSBwYWlyPGludCxwaWk+CiNkZWZpbmUgaWQxIGlkPDwxCiNkZWZpbmUgaWQyIChpZDw8MSkrMQojZGVmaW5lIE1BU0soaSkgKDE8PGkpCiNkZWZpbmUgVElNRSAiXG5UaW1lIGVsYXBzZWQgOiAiPDwoZG91YmxlKWNsb2NrKCkvMTAwMDw8IiBtcyIKI2RlZmluZSBhbGwoeCkgeC5iZWdpbigpLHguZW5kKCkKI2RlZmluZSBmYXN0IGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7IGNpbi50aWUoMCk7Y291dC50aWUoMCk7CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmNvbnN0IGxsIG1vZCA9IDFlOSArIDc7CmNvbnN0IGxsIElORiA9IDFlMTY7CmNvbnN0IGxsIG1heG4gPSAxZTYgKyA1Owpjb25zdCBsbCBtYXhzID0gMWU3Owpjb25zdCBsbCBkeFtdID0geyAtMSwgMCwgMCwgMSB9Owpjb25zdCBsbCBkeVtdID0geyAwLCAtMSwgMSwgMCB9OwoKbGwgbixrOwpsbCByZXMgPSBMTE9OR19NSU47CmxsIGFbbWF4bl0sYlttYXhuXTsKbGwgYnRbbWF4bl07CnZlY3RvcjxsbD4gYW5zOwoKdm9pZCB0digpCnsKICAgIGFucy5jbGVhcigpOwoKICAgIGZvcihpbnQgaSA9IDE7IGkgPD0gbjsgKytpKXsKICAgICAgICBpZihidFtpXSA9PSAxKXsKICAgICAgICAgICAgYW5zLnBiKGkpOwogICAgICAgIH0KICAgIH0KfQoKdm9pZCBxbChsbCBpLGxsIHN1bSxsbCB3KQp7CiAgICBpZihpID09IG4pewogICAgICAgIGlmKHJlcyA8PSBzdW0pewogICAgICAgICAgICByZXMgPSBzdW07CiAgICAgICAgICAgIHR2KCk7CiAgICAgICAgfQogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBpZih3ICsgYVtpICsgMV0gPD0gayl7CiAgICAgICAgYnRbaSArIDFdID0gMTsKICAgICAgICBxbChpICsgMSxzdW0gKyBiW2kgKyAxXSx3ICsgYVtpICsgMV0pOwogICAgfQogICAgaWYodyA8PSBrKXsKICAgICAgICBidFtpICsgMV0gPSAwOwogICAgICAgIHFsKGkgKyAxLHN1bSx3KTsKICAgIH0KfQoKaW50IG1haW4oKQp7CiAgICBmYXN0CgogICAgY2luID4+IG4gPj4gazsKCiAgICBmb3IoaW50IGkgPSAxOyBpIDw9IG47ICsraSl7CiAgICAgICAgY2luID4+IGFbaV0gPj4gYltpXTsKICAgIH0KCiAgICBxbCgwLDAsMCk7CgogICAgc29ydChhbGwoYW5zKSk7CgogICAgY291dCA8PCBhbnMuc2l6ZSgpIDw8IGVuZGw7CgogICAgZm9yKGxsIGkgOiBhbnMpewogICAgICAgIGNvdXQgPDwgaSA8PCAnICc7CiAgICB9CgogICAgcmV0dXJuIDA7Cn0K