#include <bits/stdc++.h>
using namespace std;
int seq1[100000][2];
int seq2[100000][2];
void merge(int arr[100000][4], long int l, long int m, long int r, int p) {
  long int n1 = 0;
  for (long int i = l; i <= m; i++) {
    seq1[n1][0] = arr[i][p];
    seq1[n1][1] = arr[i][p + 2];
    n1++;
  }
  long int n2 = 0;
  for (long int i = m + 1; i <= r; i++) {
    seq2[n2][0] = arr[i][p];
    seq2[n2][1] = arr[i][p + 2];
    n2++;
  }
  long int i1 = 0, i2 = 0;
  long int is = l;
  while (i1 < n1 || i2 < n2) {
    if (i1 != n1 && (i2 == n2 || seq1[i1][0] >= seq2[i2][0])) {
      arr[is][p] = seq1[i1][0];
      arr[is][p + 2] = seq1[i1][1];
      is++;
      i1++;
    } else {
      arr[is][p] = seq2[i2][0];
      arr[is][p + 2] = seq2[i2][1];
      is++;
      i2++;
    }
  }
}
void mergesort(int arr[100000][4], long int l, long int r, int p) {
  if (l >= r) return;
  long int m = (r + l) / 2;
  mergesort(arr, l, m, p);
  mergesort(arr, m + 1, r, p);
  merge(arr, l, m, r, p);
}
int main() {
  long int N, V;
  cin >> N;
  cin >> V;
  int lista[100000][4] = {};
  int iterador[2] = {};
  for (long int i = 0; i < N; i++) {
    int a, b;
    cin >> a;
    cin >> b;
    lista[iterador[a - 1]][a - 1] = b;
    lista[iterador[a - 1]][a + 1] = i;
    iterador[a - 1]++;
  }
  mergesort(lista, 0, iterador[0] - 1, 0);
  mergesort(lista, 0, iterador[1] - 1, 1);
  int veiculos[N];
  int it = 0;
  long int total = 0;
  int iterador1[2] = {};
  if (V % 2 == 1) {
    if (iterador[0] > 0) {
      veiculos[it] = lista[0][2];
      it++;
      iterador1[0]++;
      total += lista[0][0];
    }
    V--;
  }
  while (V > 0) {
    if (iterador1[0] >= iterador[0] && iterador1[1] >= iterador[1]) break;
    int a = lista[iterador1[0]][0];
    int b = lista[iterador1[0] + 1][0];
    if (lista[iterador1[1]][1] < a + b) {
      veiculos[it] = lista[iterador1[0]][2];
      it++;
      if (iterador1[0] + 1 < iterador[0]) {
        veiculos[it] = lista[iterador1[0] + 1][2];
        it++;
      }
      total += a + b;
      iterador1[0] += 2;
    } else {
      veiculos[it] = lista[iterador1[1]][3];
      it++;
      total += lista[iterador1[1]][1];
      iterador1[1]++;
    }
    V -= 2;
  }
  cout << total << endl;
  for (int i = 0; i < it; i++) cout << veiculos[i] + 1 << ' ';
  return 0;
}
