#include <bits/stdc++.h>
#pragma GCC optimize("-O3")
using namespace std;
void Main();
int main() {
  ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
  Main();
}
vector<pair<int, int> > a, b;
vector<int> c;
bool cmp(const pair<int, int> &x, const pair<int, int> &y) {
  return x.first > y.first;
}
void Main() {
  int n, v;
  cin >> n >> v;
  for (int i = 0; i < n; i++) {
    int t, p;
    cin >> t >> p;
    if (t == 1)
      a.emplace_back(p, i + 1);
    else
      b.emplace_back(p, i + 1);
  }
  sort(a.begin(), a.end(), cmp);
  sort(b.begin(), b.end(), cmp);
  c.push_back(0);
  for (size_t i = 0; i < b.size(); i++) {
    c.push_back(c.back() + b[i].first);
  }
  int ans = -1, A = 0;
  int aa = -1, bb = -1;
  for (int i = 0; i <= int(a.size()) && v >= i; i++) {
    const int bbb = min(int(b.size()), (v - i) / 2);
    const int cur = A + c[bbb];
    if (cur > ans) {
      ans = cur;
      aa = i, bb = bbb;
    }
    if (i != int(a.size())) A += a[i].first;
  }
  cout << ans << "\n";
  for (int i = 0; i < aa; i++) {
    cout << a[i].second << " ";
  }
  for (int i = 0; i < bb; i++) {
    cout << b[i].second << " ";
  }
  cout << "\n";
}
