#include <bits/stdc++.h>
using namespace std;
bool misort(pair<int, int> p1, pair<int, int> p2) {
  return p1.first > p2.first;
}
int main() {
  long long int maxi[100500];
  long long int maxi2[100500];
  int quien1[100500];
  int quien2[100500];
  for (int i = 0; i < 100500; ++i) {
    maxi[i] = 0;
    maxi2[i] = 0;
    quien1[i] = 0;
    quien2[i] = 0;
  }
  map<int, vector<pair<int, int> > > dicc;
  int N, cact, sact;
  scanf("%d", &N);
  for (int i = 1; i <= N; ++i) {
    scanf("%d %d", &cact, &sact);
    dicc[cact].push_back(make_pair(sact, i));
  }
  for (map<int, vector<pair<int, int> > >::iterator it = dicc.begin();
       it != dicc.end(); ++it) {
    sort(((*it).second).begin(), ((*it).second).end(), misort);
    long long int sumaact = 0;
    for (int i = 0; i < ((*it).second).size(); ++i) {
      sumaact += ((*it).second)[i].first;
      if (sumaact >= maxi[i + 1]) {
        maxi2[i + 1] = maxi[i + 1];
        maxi[i + 1] = sumaact;
        quien2[i + 1] = quien1[i + 1];
        quien1[i + 1] = (*it).first;
        continue;
      }
      if (sumaact >= maxi2[i + 1]) {
        maxi2[i + 1] = sumaact;
        quien2[i + 1] = (*it).first;
      }
    }
  }
  long long int total = 0;
  int q1, q2, c1, c2;
  for (int i = 0; i < 100500 - 1; ++i) {
    if (total < maxi[i] + maxi2[i] && quien1[i] && quien2[i]) {
      total = maxi[i] + maxi2[i];
      q1 = quien1[i];
      q2 = quien2[i];
      c1 = i;
      c2 = i;
    }
    if (quien1[i] != quien1[i + 1]) {
      if (total < maxi[i] + maxi[i + 1] && quien1[i] && quien1[i + 1]) {
        total = maxi[i] + maxi[i + 1];
        q1 = quien1[i];
        q2 = quien1[i + 1];
        c1 = i;
        c2 = i + 1;
      }
    } else {
      if (total < maxi[i] + maxi2[i + 1] && quien1[i] && quien2[i + 1]) {
        total = maxi[i] + maxi2[i + 1];
        q1 = quien1[i];
        q2 = quien2[i + 1];
        c1 = i;
        c2 = i + 1;
        continue;
      }
      if (total < maxi2[i] + maxi[i + 1] && quien2[i] && quien1[i + 1]) {
        total = maxi2[i] + maxi[i + 1];
        q1 = quien2[i];
        q2 = quien1[i + 1];
        c1 = i;
        c2 = i + 1;
      }
    }
  }
  cout << total << endl;
  printf("%d\n", c1 + c2);
  printf("%d", ((dicc[q2])[0]).second);
  c2--;
  for (int i = 0; i < c2; ++i) {
    printf(" %d %d", (dicc[q1])[i].second, (dicc[q2])[i + 1].second);
  }
  if (c1 > c2) {
    printf(" %d", (dicc[q1])[c1 - 1].second);
  }
  puts("");
  return 0;
}
