#include <bits/stdc++.h>
using namespace std;
using ll = long long;
int main(void) {
  int n;
  cin >> n;
  set<ll> pls[2], els[2];
  ll sum = 0, alp = 0;
  pls[0].insert(1e9 + 1);
  pls[1].insert(1e9 + 1);
  els[0].insert(0);
  els[1].insert(0);
  int n1 = 2;
  while (n--) {
    int tp;
    ll d;
    cin >> tp >> d;
    if (d > 0) {
      sum += d;
      pls[tp].insert(d);
      alp += d;
      if (tp == 1) n1++;
    }
    if (d < 0) {
      {
        auto itr = pls[tp].find(-d);
        if (itr != pls[tp].end()) {
          alp += d;
          pls[tp].erase(itr);
        }
      }
      {
        auto itr = els[tp].find(-d);
        if (itr != els[tp].end()) {
          els[tp].erase(itr);
        }
      }
      sum += d;
      if (tp == 1) n1--;
    }
    while (n1 < pls[0].size() + pls[1].size()) {
      auto itr0 = pls[0].begin();
      auto itr1 = pls[1].begin();
      if (*itr0 < *itr1) {
        alp -= *itr0;
        els[0].insert(*itr0);
        pls[0].erase(itr0);
      } else {
        alp -= *itr1;
        els[1].insert(*itr1);
        pls[1].erase(itr1);
      }
    }
    while (n1 > pls[0].size() + pls[1].size()) {
      auto itr0 = els[0].end();
      --itr0;
      auto itr1 = els[1].end();
      --itr1;
      if (*itr0 == 0 && *itr1 == 0) break;
      if (*itr0 > *itr1) {
        alp += *itr0;
        pls[0].insert(*itr0);
        els[0].erase(itr0);
      } else {
        alp += *itr1;
        pls[1].insert(*itr1);
        els[1].erase(itr1);
      }
    }
    if (els[1].size() == 1 && pls[1].size() >= 2) {
      auto itr1 = pls[1].begin();
      alp -= *itr1;
      els[1].insert(*itr1);
      pls[1].erase(itr1);
      if (n1 > pls[0].size() + pls[1].size()) {
        auto itr0 = els[0].end();
        --itr0;
        if (*itr0 != 0) {
          alp += *itr0;
          pls[0].insert(*itr0);
          els[0].erase(itr0);
        }
      }
    }
    while (n1 == pls[0].size() + pls[1].size()) {
      auto itr = els[0].end();
      --itr;
      auto itr0 = pls[0].begin();
      auto itr1 = pls[1].begin();
      if (*itr > *itr0) {
        alp += *itr - *itr0;
        pls[0].insert(*itr);
        els[0].erase(itr);
        els[0].insert(*itr0);
        pls[0].erase(itr0);
      } else if (*itr > *itr1) {
        alp += *itr - *itr1;
        pls[0].insert(*itr);
        els[0].erase(itr);
        els[1].insert(*itr1);
        pls[1].erase(itr1);
      } else {
        break;
      }
    }
    while (n1 == pls[0].size() + pls[1].size()) {
      auto itr = els[1].end();
      --itr;
      auto itr0 = pls[0].begin();
      auto itr1 = pls[1].begin();
      if (*itr > *itr0 && els[1].size() > 2) {
        alp += *itr - *itr0;
        pls[1].insert(*itr);
        els[1].erase(itr);
        els[0].insert(*itr0);
        pls[0].erase(itr0);
      } else if (*itr > *itr1) {
        alp += *itr - *itr1;
        pls[1].insert(*itr);
        els[1].erase(itr);
        els[1].insert(*itr1);
        pls[1].erase(itr1);
      } else {
        break;
      }
    }
    cout << sum + alp << endl;
  }
}
