#include <bits/stdc++.h>
using std::sort;
using std::unique;
struct CMD {
  char op[10];
  int num;
} cmd[100005];
struct Tree {
  int l, r;
  long long sum[5];
  int num;
} tree[100005 << 2];
int number[100005];
int len, n;
void build(int l, int r, int curr) {
  tree[curr].l = l;
  tree[curr].r = r;
  tree[curr].num = 0;
  memset(tree[curr].sum, 0, sizeof(int) * 5);
  if (l == r) return;
  build(l, ((l + r) >> 1), (curr << 1));
  build(((l + r) >> 1) + 1, r, (curr << 1 | 1));
}
void pushUp(int curr) {
  int l = (curr << 1);
  int r = (curr << 1 | 1);
  tree[curr].num = tree[l].num + tree[r].num;
  for (int i = 0; i < 5; i++) {
    tree[curr].sum[i] =
        tree[l].sum[i] + tree[r].sum[(i + 5 - tree[l].num % 5) % 5];
  }
}
void update(int p, int type, int curr) {
  if (tree[curr].l == tree[curr].r) {
    tree[curr].num = type;
    tree[curr].sum[0] = number[p] * type;
    return;
  }
  int m = ((tree[curr].l + tree[curr].r) >> 1);
  if (p <= m)
    update(p, type, (curr << 1));
  else
    update(p, type, (curr << 1 | 1));
  pushUp(curr);
}
int BS(int c) {
  int l = 1, r = len + 1, m;
  while (l < r) {
    m = (l + r) >> 1;
    if (number[m] < c)
      l = m + 1;
    else
      r = m;
  }
  return l;
}
int main() {
  scanf("%d", &n);
  len = 0;
  for (int i = 0; i < n; i++) {
    scanf("%s", &cmd[i].op);
    if (cmd[i].op[0] == 'a' || cmd[i].op[0] == 'd') {
      scanf("%d", &cmd[i].num);
      number[++len] = cmd[i].num;
    }
  }
  sort(number + 1, number + len + 1);
  len = unique(number + 1, number + len + 1) - number - 1;
  if (len) build(1, len, 1);
  for (int i = 0; i < n; i++) {
    if (cmd[i].op[0] == 'a') {
      int p = BS(cmd[i].num);
      update(p, 1, 1);
    } else if (cmd[i].op[0] == 'd') {
      int p = BS(cmd[i].num);
      update(p, 0, 1);
    } else {
      printf("%I64d\n", tree[1].sum[2]);
    }
  }
  return 0;
}
