#include <bits/stdc++.h>
using namespace std;
int abs(int a) { return a < 0 ? -1 * a : a; }
int n, sum, t[100012], mas[100012], in, ms, rs;
bool u[100012];
vector<pair<int, pair<int, int> > > kat;
vector<pair<int, int> > bay;
int main() {
  cin >> n >> sum;
  for (int i = 1; i <= n; i++) {
    cin >> t[i] >> mas[i];
    if (t[i] == 1) {
      bay.push_back({mas[i], i});
    } else {
      kat.push_back({mas[i], {i, 0}});
    }
  }
  sort(bay.begin(), bay.end());
  if (sum % 2 == 1 && bay.size() > 0) {
    ms = bay[bay.size() - 1].first;
    in = bay[bay.size() - 1].second;
    bay.pop_back();
  }
  while (bay.size() > 1) {
    int i = bay.size() - 1;
    kat.push_back(
        {bay[i].first + bay[i - 1].first, {bay[i].second, bay[i - 1].second}});
    bay.pop_back();
    bay.pop_back();
  }
  sort(kat.begin(), kat.end());
  cerr << kat.size() << endl;
  while (sum > 1 && kat.size() > 0) {
    int i = kat.size() - 1;
    sum -= 2;
    rs += kat[i].first;
    u[kat[i].second.first] = u[kat[i].second.second] = 1;
    kat.pop_back();
  }
  cerr << "M - > " << ms << ' ' << in << endl;
  if (sum) {
    sum--;
    rs += ms;
    ms = 0;
    u[in] = 1;
  }
  cerr << sum << endl;
  for (int i = 1; i <= n && sum >= 1; i++) {
    if (u[i]) continue;
    if (t[i] == 1 && ms < mas[i]) {
      in = i;
      ms = mas[i];
    }
  }
  rs += ms;
  u[in] = 1;
  cout << rs << endl;
  for (int i = 1; i <= n; i++) {
    if (u[i]) cout << i << ' ';
  }
  return 0;
}
