#include <bits/stdc++.h>
using namespace std;
inline double sqr(double x) { return x * x; }
#pragma comment(linker, "/STACK:16777216")
map<int, vector<pair<int, int> > > m;
map<int, vector<pair<int, int> > >::iterator it;
pair<long long, int> a[100002][3];
int sz[100002];
int main() {
  int n, x, y;
  long long s;
  cin >> n;
  for (int i = int(0); i < int(n); ++i) {
    cin >> x >> y;
    m[x].push_back(make_pair(y, i + 1));
  }
  for (it = m.begin(); it != m.end(); ++it) {
    sort(it->second.begin(), it->second.end(), greater<pair<int, int> >());
    s = 0;
    for (int i = int(0); i < int(it->second.size()); ++i) {
      s += it->second[i].first;
      a[i + 1][sz[i + 1]++] = make_pair(s, it->first);
      if (sz[i + 1] == 3) {
        sort(a[i + 1], a[i + 1] + 3, greater<pair<long long, int> >());
        sz[i + 1] = 2;
      }
    }
  }
  a[0][sz[0]++] = make_pair(0, 0);
  pair<int, int> r1, r2;
  s = 0;
  for (int i = int(1); i < int(100001); ++i)
    for (int j = int(0); j < int(sz[i]); ++j)
      for (int k = int(i - 1); k < int(i + 1); ++k)
        for (int r = int(0); r < int(sz[k]); ++r)
          if (a[i][j].second != a[k][r].second)
            if (a[i][j].first + a[k][r].first > s) {
              s = a[i][j].first + a[k][r].first;
              r1 = make_pair(a[i][j].second, i);
              r2 = make_pair(a[k][r].second, k);
            }
  cout << s << endl;
  cout << r1.second + r2.second << endl;
  while (r1.second + r2.second) {
    cout << m[r1.first][--r1.second].second << ' ';
    if (r2.second) cout << m[r2.first][--r2.second].second << ' ';
  }
  return 0;
}
