#include <bits/stdc++.h>
using namespace std;
struct node {
  int s, t, id;
  bool operator<(const node& b) const {
    if (s == b.s) return t < b.t;
    return s > b.s;
  }
} a[202020];
int n, T;
bool cmp(node a, node b) { return a.t < b.t; }
int main() {
  scanf("%d%d", &n, &T);
  for (int i = 0; i < n; i++) {
    scanf("%d%d", &a[i].s, &a[i].t);
    a[i].id = i + 1;
  }
  sort(a, a + n, cmp);
  priority_queue<node> q;
  long long sumtmp = 0;
  for (int i = 0; i < n; i++) {
    if (T - sumtmp >= a[i].t) {
      q.push(a[i]);
      sumtmp += a[i].t;
    }
    while (!q.empty() && q.top().s < q.size()) {
      sumtmp -= q.top().t;
      q.pop();
    }
  }
  printf("%d\n", q.size());
  printf("%d\n", q.size());
  while (!q.empty()) {
    cout << q.top().id << ' ';
    q.pop();
  }
  printf("\n");
}
