#include <bits/stdc++.h>
using namespace std;
pair<int, int> a[100000 + 10], b[100000 + 10];
int an, bn;
int main() {
  int n;
  cin >> n;
  int v;
  cin >> v;
  an = bn = 0;
  for (int i = 0; i < n; ++i) {
    int t;
    scanf("%d", &t);
    int d;
    scanf("%d", &d);
    if (t == 1) {
      a[an].first = d;
      a[an].second = i + 1;
      ++an;
    } else {
      b[bn].first = d;
      b[bn].second = i + 1;
      ++bn;
    }
  }
  sort(a, a + an);
  sort(b, b + bn);
  reverse(a, a + an);
  reverse(b, b + bn);
  for (int i = 1; i < an; ++i) a[i].first += a[i - 1].first;
  for (int i = 1; i < bn; ++i) b[i].first += b[i - 1].first;
  if (2 * bn + an <= v) {
    cout << a[an - 1].first + b[bn - 1].first << endl;
    for (int i = 1; i <= n; ++i) printf("%d ", i);
    return 0;
  }
  if (v == 1) {
    if (an == 0) {
      cout << 0;
    } else {
      cout << a[0].first << endl;
      cout << a[0].second;
    }
    return 0;
  }
  int la, lb, s;
  lb = min(v / 2, bn);
  la = 0;
  while (v - 2 * lb - la > 0) ++la;
  s = a[la - 1].first + b[lb - 1].first;
  int bla, blb, bs;
  bla = la;
  blb = lb;
  bs = s;
  while (true) {
    if (lb == 0) break;
    --lb;
    if (la == an) break;
    ++la;
    if (la < an) ++la;
    int cs = a[la - 1].first;
    if (lb > 0) cs += b[lb - 1].first;
    if (cs > bs) {
      bs = cs;
      bla = la;
      blb = lb;
    }
  }
  cout << bs << endl;
  for (int i = 0; i < bla; ++i) printf("%d ", a[i].second);
  for (int i = 0; i < blb; ++i) printf("%d ", b[i].second);
  return 0;
}
