#include <bits/stdc++.h>
using namespace std;
inline long long read() {
  long long x = 0, f = 1;
  char ch = getchar();
  while (ch < '0' || ch > '9') {
    if (ch == '-') f = -1;
    ch = getchar();
  }
  while (ch >= '0' && ch <= '9') {
    x = x * 10 + ch - '0';
    ch = getchar();
  }
  return x * f;
}
char s[10];
int n, m, x;
int d[100010];
map<int, int> mp;
struct opr {
  int op, x;
} q[100010];
struct segtree {
  long long sum[5];
  int l, r, tag, tot;
} t[100010 * 8];
long long swp[5];
inline void gao(int k, int tt) {
  int t2 = 0;
  t[k].tot += tt;
  for (int i = 0; i < 5; i++) {
    t2 = i + tt;
    if (t2 >= 5) t2 -= 5;
    if (t2 < 0) t2 += 5;
    swp[t2] = t[k].sum[i];
  }
  for (int i = 0; i < 5; i++) t[k].sum[i] = swp[i];
}
inline void pushdown(int k) {
  int tt = t[k].tag;
  t[k].tag = 0;
  t[k << 1].tag += tt;
  t[k << 1 | 1].tag += tt;
  if (t[k << 1].tag >= 5) t[k << 1].tag -= 5;
  if (t[k << 1].tag < 0) t[k << 1].tag += 5;
  if (t[k << 1 | 1].tag >= 5) t[k << 1 | 1].tag -= 5;
  if (t[k << 1 | 1].tag < 0) t[k << 1 | 1].tag += 5;
  gao(k << 1, tt);
  gao(k << 1 | 1, tt);
}
inline void update(int k) {
  for (int i = 0; i < 5; i++)
    t[k].sum[i] = t[k << 1].sum[i] + t[k << 1 | 1].sum[i];
}
inline void buildtree(int now, int l, int r) {
  t[now].l = l;
  t[now].r = r;
  if (l == r) return;
  int mid = (l + r) >> 1;
  buildtree(now << 1, l, mid);
  buildtree(now << 1 | 1, mid + 1, r);
}
inline void rotate(int now, int x, int y, int d) {
  pushdown(now);
  int l = t[now].l, r = t[now].r;
  if (l == x && r == y) {
    t[now].tag += d;
    gao(now, d);
    return;
  }
  int mid = (l + r) >> 1;
  if (y <= mid)
    rotate(now << 1, x, y, d);
  else if (x > mid)
    rotate(now << 1 | 1, x, y, d);
  else
    rotate(now << 1, x, mid, d), rotate(now << 1 | 1, mid + 1, y, d);
  update(now);
}
inline void insert(int now, int x, int z) {
  pushdown(now);
  int l = t[now].l, r = t[now].r;
  if (l == x && r == x) {
    if (z == 1)
      t[now].sum[t[now].tot % 5] += d[x];
    else if (z == -1)
      t[now].sum[t[now].tot % 5] -= d[x];
    return;
  }
  int mid = (l + r) >> 1;
  if (x <= mid)
    insert(now << 1, x, z);
  else
    insert(now << 1 | 1, x, z);
  update(now);
}
inline void bianli(int k) {
  int l = t[k].l, r = t[k].r;
  printf("%d %d %d |%lld|%lld|%lld|%lld|%lld| %d %d\n", k, l, r, t[k].sum[0],
         t[k].sum[1], t[k].sum[2], t[k].sum[3], t[k].sum[4], t[k].tag,
         t[k].tot);
  if (l == r) return;
  bianli(k << 1);
  bianli(k << 1 | 1);
}
int main() {
  m = read();
  for (int i = 1; i <= m; i++) {
    scanf("%s", s + 1);
    if (s[1] == 'a') {
      x = read();
      q[i].op = 1;
      q[i].x = x;
      d[++n] = x;
    } else if (s[1] == 'd') {
      x = read();
      q[i].op = 2;
      q[i].x = x;
    } else
      q[i].op = 3;
  }
  if (!n) {
    for (int i = 1; i <= m; i++) puts("0");
    return 0;
  }
  sort(d + 1, d + n + 1);
  for (int i = 1; i <= n; i++) mp[d[i]] = i;
  for (int i = 1; i <= m; i++)
    if (q[i].x) q[i].x = mp[q[i].x];
  buildtree(1, 1, n);
  for (int i = 1; i <= m; i++) {
    if (q[i].op == 1) {
      rotate(1, q[i].x, n, 1);
      insert(1, q[i].x, 1);
    } else if (q[i].op == 2) {
      rotate(1, q[i].x, n, -1);
      insert(1, q[i].x, -1);
    } else if (q[i].op == 3) {
      printf("%lld\n", t[1].sum[3]);
    }
  }
}
