#include <bits/stdc++.h>
using namespace std;
struct boat {
  int p;
  int id;
};
boat b1[100010], b2[100010];
bool cmp(boat a, boat b) {
  if (a.p != b.p)
    return a.p > b.p;
  else
    return a.id < b.id;
}
int main() {
  int n, v;
  cin >> n >> v;
  int t;
  int len1 = 0, len2 = 0;
  for (int i = 0; i < n; i++) {
    cin >> t;
    if (t == 1) {
      cin >> b1[len1].p;
      b1[len1++].id = i + 1;
    } else {
      cin >> b2[len2].p;
      b2[len2++].id = i + 1;
    }
  }
  sort(b1, b1 + len1, cmp);
  sort(b2, b2 + len2, cmp);
  int ans = 0;
  int i1 = 0, i2 = 0;
  for (; i2 < len2 && v >= 2; i2++) {
    v -= 2;
    ans += b2[i2].p;
  }
  for (; i1 < len1 && v >= 1; i1++) {
    v -= 1;
    ans += b1[i1].p;
  }
  int tmp = ans;
  for (int i = i2 - 1; i >= 0; i--) {
    tmp -= b2[i].p;
    v += 2;
    int j;
    for (j = i1; j < len1 && v >= 1; j++) {
      v--;
      tmp += b1[j].p;
    }
    if (tmp > ans) {
      i2--;
      ans = tmp;
      i1 = j;
    } else
      break;
  }
  cout << ans << endl;
  for (int i = 0; i < i2; i++) {
    cout << b2[i].id << " ";
  }
  for (int i = 0; i < i1; i++) {
    cout << b1[i].id << " ";
  }
  cout << endl;
  return 0;
}
