Zbieracz Bajtemonów

Limit pamięci: 64MB

Bajtocy zbiera Bajtemony. Każdy Bajtemon ma swoją cenę i wagę. Cena jest w bajtlarach i jest potęgą dwójki. Bajtocy ma do dyspozycji S bajtlarów. Bajtocy chce wydać wszystkie swoje bajtlary na Bajtemony, ale tak, żeby ich masa była jak najmniejsza.

Zadanie

Napisz program który

Wejście

W pierwszej linii są dwie liczby całkowite oddzielone pojedynczym odstępem: n - liczba wszystkich Bajtemonów, 1 <= n <= 1 000 000, i S, 1 <= S < 264.

W kolejnych n liniach są opisy Bajtemonów. W i+1 linii, 1 <=i <= n, jest opis i-tego Bajtemonu. Opis składa się z dwóch liczb: e_i i w_i, 0 <= e_i <= 63, 1 <= w_i < 232. e_i oznacza, że cena i-tego Bajtemonu wynosi 2e_i, a w_i oznacza wagę.

Wyjście

Jeżeli nie istnieje taki podzbiór Bajtemonów, którego łączna cena wynosi S należy wypisać jedną liczbę 0.

W przeciwnym razie należy wypisać w pierwszym wierszu liczbę k oznaczającą liczbę kupionych Bajtemonów, a następnie w kolejnych k wierszach należy wypisać numery tych Bajtemonów w kolejności rosnącej.

Przykład

Dla danych wejściowych:

7 6
2 8
0 2
1 5
0 1
3 1
2 7
1 4

prawidłową odpowiedzią może być:

3
2
4
6