#include <bits/stdc++.h>
using namespace std;
class Spells {
 public:
  set<int> all, fr, lt, rest;
  long long sumAll;
  long long sum;
  Spells() : sumAll(0), sum(0) {}
  void remove_fr(int x);
  void remove_lt(int x);
  void add_fr(int x);
  void add_lt(int x);
  void allToRest();
  void restToAll();
  long long maxDamage();
  void print();
};
void Spells::allToRest() {
  int tmp = *all.begin();
  all.erase(tmp);
  rest.insert(tmp);
  sumAll -= tmp;
}
void Spells::restToAll() {
  int tmp = *rest.rbegin();
  all.insert(tmp);
  sumAll += tmp;
  rest.erase(tmp);
}
void Spells::remove_fr(int x) {
  if (rest.begin() != rest.end() && *rest.rbegin() >= x)
    rest.erase(x);
  else {
    all.erase(x);
    sumAll -= x;
    restToAll();
  }
  fr.erase(x);
  sum -= x;
}
void Spells::remove_lt(int x) {
  if (rest.begin() != rest.end() && *rest.rbegin() >= x) {
    rest.erase(x);
    allToRest();
  } else {
    all.erase(x);
    sumAll -= x;
  }
  lt.erase(x);
  sum -= x;
}
void Spells::add_fr(int x) {
  if (!all.empty() && *all.begin() < x) {
    all.insert(x);
    sumAll += x;
    allToRest();
  } else {
    rest.insert(x);
  }
  fr.insert(x);
  sum += x;
}
void Spells::add_lt(int x) {
  rest.insert(x);
  restToAll();
  lt.insert(x);
  sum += x;
}
long long Spells::maxDamage() {
  if (lt.empty()) return sum;
  if (fr.empty()) return (sumAll * 2 - *lt.begin());
  if (!lt.empty() && !fr.empty() && *lt.begin() > *fr.rbegin())
    return (sumAll - *lt.begin() + *fr.rbegin()) * 2 +
           (sum - sumAll + *lt.begin() - *fr.rbegin());
  else
    return sumAll * 2 + (sum - sumAll);
}
void Spells::print() {
  printf("all: ");
  for (auto x : all) printf("%d ", x);
  printf("\n");
  printf("rest: ");
  for (auto x : rest) printf("%d ", x);
  printf("\n");
  printf("fr: ");
  for (auto x : fr) printf("%d ", x);
  printf("\n");
  printf("lt: ");
  for (auto x : lt) printf("%d ", x);
  printf("\n");
  printf("sum = %d, sumAll = %d\n", sum, sumAll);
}
int main() {
  int n;
  scanf("%d\n", &n);
  Spells spells = Spells();
  while (n--) {
    int tp, d;
    scanf("%d%d", &tp, &d);
    if (tp == 0 && d < 0)
      spells.remove_fr(-d);
    else if (tp == 0 && d > 0)
      spells.add_fr(d);
    else if (tp == 1 && d < 0)
      spells.remove_lt(-d);
    else if (tp == 1 && d > 0)
      spells.add_lt(d);
    printf("%lld\n", spells.maxDamage());
  }
  return 0;
}
