#include <bits/stdc++.h>
using namespace std;
const int INF = 0x3f3f3f3f;
const long long INFLL = 1e18;
const int MOD = 1e9 + 7;
const int MAXN = 2e5 + 5;
int n;
int l, ld;
long long ans;
set<pair<int, int> > s, d;
void shiftLeft() {
  if (!d.empty()) {
    pair<int, int> a = *d.begin();
    d.erase(d.begin());
    ans -= a.first;
    if (!a.second) ld--;
    s.insert(a);
  }
}
void shiftRight() {
  if (!s.empty()) {
    pair<int, int> a = *s.rbegin();
    s.erase(a);
    ans += a.first;
    if (!a.second) ld++;
    d.insert(a);
  }
}
void insertX(int t, int dmg) {
  s.insert({dmg, t});
  ans += dmg;
  if (!t) l++;
  shiftLeft();
  while (l > (int)d.size()) shiftRight();
}
void eraseX(int t, int dmg) {
  s.erase({dmg, t});
  if (d.count({dmg, t})) {
    if (!t) ld--;
    ans -= dmg;
    d.erase({dmg, t});
  }
  ans -= dmg;
  if (!t) l--;
  while (l < (int)d.size()) shiftLeft();
  while (l > (int)d.size()) shiftRight();
}
int main() {
  scanf("%d", &n);
  for (int i = 0; i < (int)n; i++) {
    int t, dmg;
    scanf("%d", &t), scanf("%d", &dmg);
    t ^= 1;
    if (dmg < 0)
      eraseX(t, -dmg);
    else
      insertX(t, dmg);
    long long aux = 0;
    if (l && l == ld) {
      aux = s.empty() ? 0 : s.rbegin()->first;
      aux -= d.begin()->first;
    }
    printf("%lld\n", ans + aux);
  }
  return 0;
}
