#include <bits/stdc++.h>
using namespace std;
long long n, m;
int a, b[100005];
vector<pair<long long, long long> > v1, v2;
unsigned long long ans = 0;
int main() {
  cin >> n >> m;
  for (int i = 1; i <= n; i++) {
    cin >> a >> b[i];
    if (a == 1)
      v1.push_back(make_pair(b[i], i));
    else
      v2.push_back(make_pair(b[i], i));
  }
  sort(v1.begin(), v1.end());
  sort(v2.begin(), v2.end());
  while (m > 1) {
    if (v1.size() >= 2 && v2.size() >= 1) {
      if (v2[v2.size() - 1].first <
          v1[v1.size() - 1].first + v1[v1.size() - 2].first) {
        ans += b[v1[v1.size() - 1].second];
        b[v1[v1.size() - 1].second] = 0;
        v1.pop_back();
        m--;
      } else {
        ans += b[v2[v2.size() - 1].second];
        b[v2[v2.size() - 1].second] = 0;
        v2.pop_back();
        m -= 2;
      }
    } else
      break;
  }
  if (v2.size() > 0) {
    while (m >= 2 && v2.size() > 0) {
      ans += b[v2[v2.size() - 1].second];
      b[v2[v2.size() - 1].second] = 0;
      v2.pop_back();
      m -= 2;
    }
  }
  if (v1.size() > 0) {
    while (m >= 1 && v1.size() > 0) {
      ans += b[v1[v1.size() - 1].second];
      b[v1[v1.size() - 1].second] = 0;
      v1.pop_back();
      m -= 1;
    }
  }
  cout << ans << endl;
  for (int i = 1; i <= n; i++) {
    if (b[i] == 0) cout << i << " ";
  }
}
