#include <bits/stdc++.h>
using namespace std;
set<int> db, ndb, fire, ligt;
long long int sumEvr = 0, sumDb = 0;
void AddSpell(int x) {
  sumEvr += x;
  if (!db.empty() && (*db.begin()) < x) {
    db.insert(x);
    sumDb += x;
  } else {
    ndb.insert(x);
  }
}
void RemoveSpell(int x) {
  sumEvr -= x;
  auto t = db.find(x);
  if (t != db.end()) {
    db.erase(t);
    sumDb -= x;
  } else {
    ndb.erase(x);
  }
}
long long int Findans() {
  while ((int)db.size() < (int)ligt.size()) {
    auto x = ndb.rbegin();
    db.insert(*x);
    sumDb += *x;
    ndb.erase(*x);
  }
  while ((int)db.size() > (int)ligt.size()) {
    auto x = db.begin();
    ndb.insert(*x);
    sumDb -= *x;
    db.erase(x);
  }
  long long int ans = sumDb + sumEvr;
  if ((int)ligt.size())
    if (fire.empty() || *(fire.rbegin()) < *(ligt.begin())) {
      ans -= *(ligt.begin());
      if (!fire.empty()) ans += *(fire.rbegin());
    }
  return ans;
}
int main() {
  ios_base ::sync_with_stdio(0);
  cin.tie(0);
  int n;
  cin >> n;
  int tp, d;
  while (n--) {
    cin >> tp >> d;
    if (tp == 0) {
      if (d > 0) {
        fire.insert(d);
        AddSpell(d);
      } else {
        fire.erase(-d);
        RemoveSpell(-d);
      }
    } else {
      if (d > 0) {
        ligt.insert(d);
        AddSpell(d);
      } else {
        ligt.erase(-d);
        RemoveSpell(-d);
      }
    }
    cout << Findans() << "\n";
  }
}
