#include <bits/stdc++.h>
using namespace std;
const int maxn = 100000;
int n, v;
vector<pair<int, int> > a1, a2;
vector<int> psa1, psa2;
int main() {
  scanf("%d%d", &n, &v);
  for (int i = 1, t, p; i <= n; i++) {
    scanf("%d%d", &t, &p);
    if (t == 1)
      a1.push_back({p, i});
    else
      a2.push_back({p, i});
  }
  sort(a1.rbegin(), a1.rend());
  sort(a2.rbegin(), a2.rend());
  psa1.push_back(0);
  psa2.push_back(0);
  for (int i = 0, tmp = 0; i < a1.size(); i++)
    tmp += a1[i].first, psa1.push_back(tmp);
  for (int i = 0, tmp = 0; i < a2.size(); i++)
    tmp += a2[i].first, psa2.push_back(tmp);
  int ans = psa1[min((int)a1.size(), v)], bst = 0;
  for (int i = 1, tmp; i <= min((int)psa2.size() - 1, v >> 1); i++) {
    tmp = psa2[i] + psa1[min((int)a1.size(), v - (i << 1))];
    if (tmp > ans) ans = tmp, bst = i;
  }
  printf("%d\n", ans);
  for (int i = 0; i < bst; i++) printf("%d ", a2[i].second);
  for (int i = 0; i < min((int)a1.size(), v - (bst << 1)); i++)
    printf("%d ", a1[i].second);
  printf("\n");
  return 0;
}
