#include <bits/stdc++.h>
using namespace std;
struct tt {
  int id, len, no, k;
  long long sum;
} p[100100];
int cmp(tt a, tt b) {
  if (a.id == b.id) return a.len > b.len;
  return a.id < b.id;
}
pair<long long, int> cc[100100][2];
int main() {
  int n, now, i, j, k, s1, s2, maxk;
  long long ans;
  while (scanf("%d", &n) != EOF) {
    ans = maxk = 0;
    for (i = 0; i < 100100; ++i) cc[i][0].first = cc[i][1].first = 0;
    for (i = 0; i < n; ++i) {
      p[i].no = i + 1;
      scanf("%d %d", &p[i].id, &p[i].len);
    }
    sort(p, p + n, cmp);
    p[0].sum = p[0].len;
    p[0].k = 1;
    for (i = 1; i < n; ++i) {
      if (p[i].id == p[i - 1].id) {
        p[i].sum = p[i - 1].sum + p[i].len;
        p[i].k = p[i - 1].k + 1;
      } else {
        maxk = max(maxk, p[i - 1].k);
        p[i].sum = p[i].len;
        p[i].k = 1;
      }
    }
    maxk = max(maxk, p[i - 1].k);
    for (i = 0; i < n; ++i) {
      k = p[i].k;
      if (p[i].sum > cc[k][1].first) {
        cc[k][1].first = p[i].sum;
        cc[k][1].second = i;
        if (cc[k][1].first > cc[k][0].first) swap(cc[k][0], cc[k][1]);
      }
    }
    for (i = 1; i <= maxk; ++i) {
      if (cc[i][0].first + cc[i][1].first > ans && cc[i][1].first) {
        ans = cc[i][0].first + cc[i][1].first;
        s1 = cc[i][0].second;
        s2 = cc[i][1].second;
      }
    }
    for (i = 1; i + 1 <= maxk; ++i) {
      if (cc[i][0].second + 1 == cc[i + 1][0].second) {
        if (cc[i + 1][1].first && cc[i][0].first + cc[i + 1][1].first > ans) {
          ans = cc[i][0].first + cc[i + 1][1].first;
          s1 = cc[i][0].second;
          s2 = cc[i + 1][1].second;
        }
        if (cc[i][1].first && cc[i][1].first + cc[i + 1][0].first > ans) {
          ans = cc[i][1].first + cc[i + 1][0].first;
          s1 = cc[i][1].second;
          s2 = cc[i + 1][0].second;
        }
      } else if (cc[i][0].first + cc[i + 1][0].first > ans) {
        ans = cc[i][0].first + cc[i + 1][0].first;
        s1 = cc[i][0].second;
        s2 = cc[i + 1][0].second;
      }
    }
    printf("%I64d\n", ans);
    printf("%d\n", p[s1].k + p[s2].k);
    k = p[s1].k + p[s2].k;
    for (j = 0; j < k; ++j) {
      if (j) printf(" ");
      if (j % 2) {
        printf("%d", p[s1].no);
        s1--;
      } else {
        printf("%d", p[s2].no);
        s2--;
      }
    }
    printf("\n");
  }
  return 0;
}
