#include <bits/stdc++.h>
using namespace std;
struct O {
  long long s, c;
  int id;
} p[100005], g[100005], h[100005];
long long d[100005], q[100005], v[100005], C1, C2, S1, S2, ans, p1, p2;
int a[100005], b[100005], n;
bool cmp(O a, O b) { return (a.c < b.c || a.c == b.c && a.s > b.s); }
void Add(int clo) {
  int p = q[clo];
  if (g[p].s < v[clo]) {
    h[p] = g[p];
    g[p].c = clo;
    g[p].s = v[clo];
  } else if (h[p].s < v[clo]) {
    h[p].c = clo;
    h[p].s = v[clo];
  }
}
inline O calc(int clo, int p) {
  if (g[p].c == clo)
    return h[p];
  else
    return g[p];
}
int main() {
  cin >> n;
  for (int i = 1; i <= n; ++i) {
    scanf("%I64d%I64d", &p[i].c, &p[i].s);
    p[i].id = i;
  }
  sort(p + 1, p + n + 1, cmp);
  d[1] = 1;
  v[1] = p[1].s;
  q[1] = 1;
  Add(1);
  for (int i = 2; i <= n; ++i)
    if (p[i - 1].c != p[i].c) {
      d[i] = d[i - 1] + 1;
      q[d[i]] = 1;
      v[d[i]] = p[i].s;
      Add(d[i]);
    } else {
      d[i] = d[i - 1];
      q[d[i]]++;
      v[d[i]] += p[i].s;
      Add(d[i]);
    }
  long long ans = 0;
  C1 = C2 = 0;
  S1 = S2 = 0;
  for (int i = 1; i <= d[n]; ++i) {
    O W = calc(i, q[i]);
    if (W.c != 0)
      if (ans < W.s + v[i]) {
        ans = W.s + v[i];
        C1 = i;
        C2 = W.c;
        S1 = q[i];
        S2 = q[i];
      }
    W = calc(i, q[i] + 1);
    if (W.c != 0)
      if (ans < W.s + v[i]) {
        ans = W.s + v[i];
        C1 = W.c;
        C2 = i;
        S1 = q[i] + 1;
        S2 = q[i];
      }
  }
  cout << ans << endl;
  cout << S1 + S2 << endl;
  p1 = p2 = 0;
  for (int i = 1; i <= n; ++i) {
    if (d[i] == C1 && p1 < S1) {
      a[++p1] = p[i].id;
    }
    if (d[i] == C2 && p2 < S2) {
      b[++p2] = p[i].id;
    }
  }
  for (int i = 1; i <= S2; ++i) printf("%d %d ", a[i], b[i]);
  if (S1 > S2) printf("%d", a[S1]);
  return 0;
}
