#include <bits/stdc++.h>
using namespace std;
const double PI = acos(-1.0);
const double eps = 1e-6;
const int INF = 0x3f3f3f3f;
const int MAXN = 1e5 + 10;
int q, m, lis[MAXN], tmp[5];
char opt[5];
struct Node {
  int l, r, s;
  int x[5];
  int laz;
} node[MAXN * 4];
struct Ques {
  int o, x;
} ques[MAXN];
void build(int rt, int l, int r) {
  node[rt].l = l, node[rt].r = r;
  memset(node[rt].x, 0, sizeof node[rt].x);
  node[rt].s = node[rt].laz = 0;
  if (l == r) return;
  int mid = ((l + r) >> 1);
  build((rt << 1), l, mid);
  build((rt << 1 | 1), mid + 1, r);
}
inline void change(int rt, int o) {
  for (int i = 0; i < 5; i++) tmp[i] = node[rt].x[i];
  for (int i = 0; i < 5; i++) node[rt].x[i] = tmp[((i - o) % 5 + 5) % 5];
  node[rt].laz = (node[rt].laz + o) % 5;
}
inline void down(int rt) {
  if (node[rt].laz) {
    change((rt << 1), node[rt].laz);
    change((rt << 1 | 1), node[rt].laz);
    node[rt].laz = 0;
  }
}
inline void up(int rt) {
  node[rt].s = node[(rt << 1)].s + node[(rt << 1 | 1)].s;
  for (int i = 0; i < 5; i++)
    node[rt].x[i] = node[(rt << 1)].x[i] + node[(rt << 1 | 1)].x[i];
}
void update(int rt, int p, int d, int o) {
  if (node[rt].l == node[rt].r) {
    if (o == 1) {
      node[rt].x[d] += lis[p];
      node[rt].s = 1;
    } else {
      node[rt].x[d] = 0;
      node[rt].s = 0;
    }
    return;
  }
  down(rt);
  int mid = ((node[rt].l + node[rt].r) >> 1);
  if (p <= mid) {
    update((rt << 1), p, d, o);
    change((rt << 1 | 1), o);
  } else
    update((rt << 1 | 1), p, d, o);
  up(rt);
}
int query(int rt, int l, int r, int o) {
  if (node[rt].l == l && node[rt].r == r) {
    if (o)
      return node[rt].s;
    else
      return node[rt].x[3];
  }
  down(rt);
  int mid = ((node[rt].l + node[rt].r) >> 1);
  if (r <= mid)
    return query((rt << 1), l, r, o);
  else if (l > mid)
    return query((rt << 1 | 1), l, r, o);
  else
    return query((rt << 1), l, mid, o) + query((rt << 1 | 1), mid + 1, r, o);
}
int main() {
  cin >> q;
  for (int i = 1; i <= q; i++) {
    scanf("%s", opt);
    if (opt[0] == 'a') {
      ques[i].o = 1;
      scanf("%d", &ques[i].x);
      lis[++m] = ques[i].x;
    } else if (opt[0] == 's')
      ques[i].o = 2;
    else {
      ques[i].o = 3;
      scanf("%d", &ques[i].x);
    }
  }
  sort(lis + 1, lis + 1 + m);
  m = unique(lis + 1, lis + 1 + m) - lis - 1;
  build(1, 1, m);
  for (int i = 1; i <= q; i++) {
    if (ques[i].o == 1) {
      int p = lower_bound(lis + 1, lis + 1 + m, ques[i].x) - lis;
      int d = query(1, 1, p, 1) + 1;
      update(1, p, d % 5, 1);
    } else if (ques[i].o == 2) {
      cout << query(1, 1, m, 0) << endl;
    } else {
      int p = lower_bound(lis + 1, lis + 1 + m, ques[i].x) - lis;
      update(1, p, 233, -1);
    }
  }
  return 0;
}
