#include <bits/stdc++.h>
using namespace std;
long n, v, s1, s2, ans[2000009], i, j, z;
pair<long, long> a[100009], b[100009];
int main() {
  scanf("%ld%ld", &n, &v);
  for (i = 0; i < n; i++) {
    scanf("%ld%ld", &j, &z);
    if (j & 1)
      a[s1].first = z, a[s1++].second = i + 1;
    else
      b[s2].first = z, b[s2++].second = i + 1;
  }
  z = j = 0;
  sort(a, a + s1);
  sort(b, b + s2);
  s1--, s2--;
  for (; s1 > 0 && s2 > 0;)
    if (v > 1 && b[s2].first > a[s1].first + a[s1 - 1].first)
      z += b[s2].first, ans[j++] = b[s2--].second, v -= 2;
    else if (v)
      z += a[s1].first, ans[j++] = a[s1--].second, v--;
    else
      break;
  if (!s1) {
    if (v & 1 || a[s1].first > b[s2].first)
      v--, z += a[s1].first, ans[j++] = a[s1--].second;
    for (; v > 1 && s2 >= 0; v -= 2)
      ans[j++] = b[s2].second, z += b[s2--].first;
  }
  if (!s2) {
    if (v > 1 && (s1 == -1 || a[s1].first + a[s1 - 1].first < b[s2].first))
      ans[j++] = b[s2].second, z += b[s2--].first, v -= 2;
    for (; v > 0 && s1 >= 0; v--) ans[j++] = a[s1].second, z += a[s1--].first;
  }
  printf("%ld\n", z);
  for (i = 0; i < j; i++) printf("%ld ", ans[i]);
  return 0;
}
