#include <bits/stdc++.h>
using namespace std;
pair<int, int> kay[100000];
pair<int, int> cat[100000];
int kp[100000];
int cp[100000];
int main() {
  int n, v, t, p;
  int kc = 0, km;
  int cc = 0, cm;
  scanf("%d %d", &n, &v);
  for (int i = 0; i < n; i++) {
    scanf("%d %d", &t, &p);
    if (t == 1) {
      kay[kc].first = -1 * p;
      kay[kc].second = i + 1;
      kc++;
    } else {
      cat[cc].first = -1 * p;
      cat[cc].second = i + 1;
      cc++;
    }
  }
  sort(kay, kay + kc);
  sort(cat, cat + cc);
  kp[0] = -1 * kay[0].first;
  for (int i = 1; i < kc; i++) {
    kp[i] = kp[i - 1] + -1 * kay[i].first;
  }
  cp[0] = -1 * cat[0].first;
  for (int i = 1; i < cc; i++) {
    cp[i] = cp[i - 1] + -1 * cat[i].first;
  }
  if (v >= (2 * cc))
    cm = cc;
  else
    cm = v / 2;
  int max = 0;
  int mc = 0, mk = 0;
  for (int i = cm - 1; i >= 0; i--) {
    int ktmp = (v - (i + 1) * 2);
    if (ktmp > kc) ktmp = kc;
    int temp;
    if (ktmp != 0)
      temp = cp[i] + kp[ktmp - 1];
    else
      temp = cp[i];
    if (temp > max) {
      max = temp;
      mc = i + 1;
      mk = ktmp;
    }
  }
  if (kc != 0) {
    if (v > kc) {
      if (max < kp[kc - 1]) {
        max = kp[kc - 1];
        mc = 0;
        mk = kc;
      }
    } else {
      if (max < kp[v - 1]) {
        max = kp[v - 1];
        mc = 0;
        mk = v;
      }
    }
  }
  printf("%d\n", max);
  for (int i = 0; i < mc; i++) {
    printf("%d ", cat[i].second);
  }
  for (int i = 0; i < mk; i++) {
    printf("%d ", kay[i].second);
  }
  printf("\n");
  return 0;
}
