#include <bits/stdc++.h>
using namespace std;
int n;
map<int, int> tab;
struct Blk {
  int id;
  long long ht;
  bool operator<(const Blk &b) const { return ht > b.ht; }
};
struct Clr {
  int id;
  int nm;
  long long ht;
  bool operator<(const Clr &b) const { return ht > b.ht; }
};
vector<Blk> color[100005];
vector<long long> sum[100005];
set<int> num;
bool cmp(const long long &a, const long long &b) { return a > b; }
int main() {
  scanf(" %d", &n);
  int tot = 0;
  Blk tbl;
  for (int i = 1; i <= n; i++) {
    int id;
    long long ht;
    scanf(" %d %I64d", &id, &ht);
    if (!tab.count(id)) {
      tab[id] = tot++;
    }
    tbl.id = i;
    tbl.ht = ht;
    color[tab[id]].push_back(tbl);
  }
  for (int i = 0; i < tot; i++) {
    sort(color[i].begin(), color[i].end());
    sum[i].resize(color[i].size() + 1);
    num.insert(color[i].size());
    num.insert(color[i].size() + 1);
    for (int j = 1; j <= color[i].size(); j++) {
      sum[i][j] = sum[i][j - 1] + color[i][j - 1].ht;
    }
  }
  long long res = -1;
  int nma, nmb, cla, clb;
  Clr tcl;
  for (set<int>::iterator it = num.begin(); it != num.end(); it++) {
    int req = *it;
    vector<Clr> tmp;
    for (int i = 0; i < tot; i++) {
      tcl.id = i;
      if (color[i].size() >= req) {
        tcl.nm = req;
        tcl.ht = sum[i][req];
        tmp.push_back(tcl);
      } else if (color[i].size() == req - 1) {
        tcl.nm = req - 1;
        tcl.ht = sum[i][req - 1];
        tmp.push_back(tcl);
      } else {
        continue;
      }
    }
    sort(tmp.begin(), tmp.end());
    if (tmp.size() >= 2) {
      if (tmp[0].ht + tmp[1].ht > res) {
        res = tmp[0].ht + tmp[1].ht;
        cla = tmp[0].id;
        clb = tmp[1].id;
        nma = tmp[0].nm;
        nmb = tmp[1].nm;
      }
    }
  }
  printf("%I64d\n", res);
  printf("%d\n", nma + nmb);
  if (nma >= nmb) {
    int cura = 0, curb = 0;
    for (int i = 1; i <= nma + nmb; i++) {
      if (i & 1) {
        printf("%d ", color[cla][cura++]);
      } else {
        printf("%d ", color[clb][curb++]);
      }
    }
  } else {
    int cura = 0, curb = 0;
    for (int i = 1; i <= nma + nmb; i++) {
      if (i & 1) {
        printf("%d ", color[clb][curb++]);
      } else {
        printf("%d ", color[cla][cura++]);
      }
    }
  }
  puts("");
}
