#include <bits/stdc++.h>
using namespace std;
const double PI = acos(-1.0);
const int INF = 1000 * 1000 * 1000 + 7;
const long long LINF = INF * (long long)INF;
const int MAX = 2 * 1000 * 100 + 47;
struct Item {
  int a, t, ind;
  bool operator<(const Item& a) const { return t < a.t; }
};
Item A[MAX];
int n, t;
bool ok(int k) {
  long long time = 0;
  int cnt = 0;
  for (int i = (0); i < (n); i++) {
    int a = A[i].a;
    int tt = A[i].t;
    if (a >= k && time + tt <= t) {
      cnt++;
      time += tt;
    }
  }
  return cnt >= k;
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cin >> n >> t;
  for (int i = (0); i < (n); i++) {
    cin >> A[i].a >> A[i].t;
    A[i].ind = i;
  }
  sort(A, A + n);
  int l = 0, r = n + 1;
  while (r - l > 1) {
    int c = (r + l) / 2;
    if (ok(c)) {
      l = c;
    } else {
      r = c;
    }
  }
  int cnt = l;
  cout << cnt << "\n" << cnt << "\n";
  for (int i = (0); i < (n); i++) {
    if (cnt == 0) break;
    if (A[i].a >= l) {
      cnt--;
      cout << A[i].ind + 1 << " ";
    }
  }
}
