#include <bits/stdc++.h>
const long long inf = 1000000000000000000LL;
using namespace std;
pair<pair<int, int>, int> g[100001];
long long ans1[100001], ans2[100001], id1[100001], id2[100001];
vector<int> A;
int main() {
  int n;
  cin >> n;
  for (int i = 1; i <= n; ++i) {
    int x, y;
    cin >> x >> y;
    g[i] = make_pair(make_pair(x, -y), i);
  }
  sort(g + 1, g + n + 1);
  for (int i = 1; i <= n; ++i) g[i].first.second *= -1;
  for (int i = 1; i <= 100000; ++i)
    ans1[i] = -inf, ans2[i] = -inf, id1[i] = -1, id2[i] = -1;
  int i = 1;
  while (i <= n) {
    int j = i + 1;
    while (j <= n && g[j].first.first == g[i].first.first) ++j;
    long long s = 0;
    for (int k = i; k <= j - 1; ++k) {
      s += (long long)g[k].first.second;
      int iq = k - i + 1;
      if (s > ans1[iq]) {
        ans2[iq] = ans1[iq];
        id2[iq] = id1[iq];
        ans1[iq] = s;
        id1[iq] = i;
      } else if (s > ans2[iq]) {
        ans2[iq] = s;
        id2[iq] = i;
      }
    }
    i = j;
  }
  long long res = -inf;
  int xx, yy;
  for (i = 1; i <= n; ++i)
    if (i == 1 || g[i].first.first != g[i - 1].first.first) {
      long long R = g[i].first.second;
      int j = i + 1;
      while (j <= n && g[i].first.first == g[j].first.first) {
        R += g[j].first.second;
        ++j;
      }
      int cnt = j - i;
      for (int k = cnt - 1; k <= cnt + 1; ++k)
        if (k >= 1 && k <= 100000) {
          long long S;
          if (id1[k] == i)
            S = ans2[k];
          else
            S = ans1[k];
          if (S <= 0) continue;
          if (S + R > res) {
            res = S + R;
            xx = i;
            yy = (id1[k] == i ? id2[k] : id1[k]);
          }
        }
    }
  cout << res << endl;
  A.clear();
  int j = xx;
  while (j <= n && g[j].first.first == g[xx].first.first) {
    A.push_back(g[j].second);
    ++j;
  }
  int k1 = j - xx, k2 = 0;
  j = yy;
  for (;;) {
    A.push_back(g[j].second);
    ++k2;
    ++j;
    if (k2 > k1 || j > n || g[j].first.first != g[j - 1].first.first) break;
  }
  cout << k1 + k2 << endl;
  int s = 0, f = (int)(A).size() - 1;
  if (k1 < k2) reverse(A.begin(), A.end());
  while (s <= f) {
    cout << A[s] << " ";
    s++;
    if (s <= f) {
      cout << A[f] << " ";
      f--;
    }
  }
  cout << endl;
  return 0;
}
