#include <bits/stdc++.h>
using namespace std;
const int INF = 0x3f3f3f3f;
const int maxn = 2e6 + 100;
const int mod = 998244353;
long long sum[maxn][5];
int num[maxn];
struct node {
  int opt, x;
} p[maxn];
char s[10];
int b[maxn];
bool vis[maxn];
void up(int root) {
  int tnum = num[root << 1] % 5;
  num[root] = num[root << 1] + num[root << 1 | 1];
  for (int i = 0; i <= 4; i++)
    sum[root][i] = sum[root << 1][i] + sum[root << 1 | 1][(i - tnum + 5) % 5];
}
void upd(int root, int l, int r, int pos, int v) {
  if (l == r) {
    if (v < 0)
      num[root]--;
    else
      num[root]++;
    sum[root][1] += v;
    return;
  }
  int mid = l + r >> 1;
  if (mid >= pos)
    upd(root << 1, l, mid, pos, v);
  else
    upd(root << 1 | 1, mid + 1, r, pos, v);
  up(root);
}
int main() {
  int n;
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) {
    int x;
    scanf("%s", s);
    if (s[0] == 's') {
      p[i].opt = 0;
      continue;
    }
    scanf("%d", &x);
    p[i].x = x;
    b[i] = x;
    if (s[0] == 'a')
      p[i].opt = 1;
    else
      p[i].opt = -1;
  }
  sort(b + 1, b + 1 + n);
  int tot = unique(b + 1, b + 1 + n) - b - 1;
  for (int i = 1; i <= n; i++) {
    if (p[i].opt == 0)
      printf("%lld\n", sum[1][3]);
    else
      upd(1, 1, tot, (lower_bound(b + 1, b + 1 + tot, p[i].x) - b),
          1LL * p[i].x * p[i].opt);
  }
  return 0;
}
