#include <bits/stdc++.h>
using namespace std;
void setIO(string str, bool dbg) {
  ios_base::sync_with_stdio(0);
  cin.tie(nullptr);
  cout.tie(nullptr);
  if (!dbg) {
    freopen((str + ".in").c_str(), "r", stdin);
    freopen((str + ".out").c_str(), "w", stdout);
  }
}
const long long MAX = 3e5 + 5;
const long long LEN = 1e6 + 5;
const long long MOD = 1e9 + 7;
const long long INF = 9e17;
long long xyz = 1;
const long long N = 2e5 + 5;
long long n;
long long m;
long long arr[MAX];
long long bit[MAX][2];
long long get(long long i, long long j) {
  if (!i) return 0;
  long long res = 0;
  for (; i >= 1; i -= (-i & i)) res += bit[i][j];
  return res;
}
long long que(long long j, long long l, long long r) {
  return get(r - 0, j) - get(l - 1, j);
}
void add(long long i, long long j, long long v) {
  for (; i <= N; i += (-i & i)) bit[i][j] += v;
}
long long src(long long num) {
  long long l = 1;
  long long r = m + 1;
  while (l < r) {
    long long mid = (l + r + 1) / 2;
    bool can = que(1, mid, m + 1) >= num;
    if (can == 1) l = mid;
    if (can == 0) r = mid - 1;
  }
  return max(l, r);
}
void run() {
  cin >> n;
  vector<pair<long long, long long> > cur;
  for (long long i = 1; i <= n; i++) {
    long long t;
    long long d;
    cin >> t >> d;
    cur.push_back({t, d});
    if (t == 0 && d > 0) arr[++m] = d;
    if (t == 1 && d > 0) arr[++m] = d;
  }
  sort(arr + 1, arr + m + 1);
  map<long long, long long> pos;
  for (long long i = 1; i <= m; i++) pos[arr[i]] = i;
  long long x = 0;
  long long y = 0;
  multiset<long long> act;
  for (long long i = 1; i <= n; i++) {
    long long t = cur[i - 1].first;
    long long d = cur[i - 1].second;
    long long org = act.size() ? *act.begin() : -1;
    if (d < 0) {
      add(pos[-d], 0, +d);
      add(pos[-d], 1, -1);
      if (t == 0) x--;
      if (t == 1) y--, act.erase(-d);
    }
    if (d > 0) {
      add(pos[d], 0, d);
      add(pos[d], 1, 1);
      if (t == 0) x++;
      if (t == 1) y++, act.insert(d);
    }
    if (org != -1) {
      add(pos[org], 0, org);
      add(pos[org], 1, 1);
    }
    long long cur = 0;
    if (act.size()) {
      cur = *act.begin();
      add(pos[cur], 0, -cur);
      add(pos[cur], 1, -1);
    }
    long long c = min(y, y + x - 1);
    long long p = src(c);
    cout << (cur + que(0, 1, p - 1) + 2LL * que(0, p - 0, m)) << endl;
  }
}
signed main() {
  setIO("", 1);
  while (xyz--) run();
  return 0;
}
