#include <bits/stdc++.h>
using namespace std;
struct node {
  int p;
  int q;
  bool operator<(const node& m) const { return p < m.p; }
};
vector<node> ll;
vector<node> rr;
int main() {
  int x, a, sum, n, k, flag = 0;
  node aha;
  scanf("%d", &n);
  for (int i = 0; i < n; i++) {
    scanf("%d %d", &x, &a);
    if (x == 0) {
      k = a;
      flag = 1;
    }
    if (x < 0) {
      aha.p = x;
      aha.q = a;
      ll.push_back(aha);
    } else if (x > 0) {
      aha.p = x;
      aha.q = a;
      rr.push_back(aha);
    }
  }
  sort(ll.rbegin(), ll.rend());
  sort(rr.begin(), rr.end());
  int rs = (int)rr.size();
  int ls = (int)ll.size();
  if (ls == 0 && rs != 0) {
    if (flag)
      printf("%d\n", rr[0].q + k);
    else
      printf("%d\n", rr[0].q);
  } else if (rs == 0 && ls != 0) {
    if (flag)
      printf("%d\n", ll[0].q + k);
    else
      printf("%d\n", ll[0].q);
  } else {
    sum = 0;
    if (ls > rs) {
      for (int i = 0; i < rs; i++) sum += rr[i].q;
      for (int i = 0; i < rs + 1; i++) sum += ll[i].q;
    } else if (ls < rs) {
      for (int i = 0; i < ls; i++) sum += ll[i].q;
      for (int i = 0; i < ls + 1; i++) sum += rr[i].q;
    } else {
      for (int i = 0; i < ls; i++) sum += ll[i].q;
      for (int i = 0; i < ls; i++) sum += rr[i].q;
    }
    if (flag)
      printf("%d\n", sum + k);
    else
      printf("%d\n", sum);
  }
  return 0;
}
