#include <bits/stdc++.h>
using namespace std;
const int maxn = 100000 + 10;
struct node {
  long long sum[5];
  int cnt;
} nod[maxn << 2];
struct Node {
  int op;
  int v;
} p[maxn];
char cmd[5];
int a[maxn];
int cnt;
int get(int x) {
  int l = 0, r = cnt - 1, m;
  while (l <= r) {
    m = l + r >> 1;
    if (a[m] == x)
      return m + 1;
    else if (a[m] > x) {
      r = m - 1;
    } else
      l = m + 1;
  }
}
void pushup(int o) {
  int lson = o << 1;
  int rson = o << 1 | 1;
  nod[o].cnt = nod[lson].cnt + nod[rson].cnt;
  for (int i = 0; i < 5; ++i) {
    nod[o].sum[i] = nod[lson].sum[i];
  }
  for (int i = 0; i < 5; ++i) {
    if (i != 0) {
      nod[o].sum[(i + nod[lson].cnt) % 5] += nod[rson].sum[i];
    }
  }
}
void update(int pos, int c, int l, int r, int o) {
  if (l == r) {
    if (c == 0) {
      memset(nod[o].sum, 0, sizeof(nod[o].sum));
      nod[o].cnt = 0;
    } else {
      nod[o].cnt = 1;
      memset(nod[o].sum, 0, sizeof(nod[o].sum));
      nod[o].sum[1] = a[pos - 1];
    }
    return;
  }
  int m = l + r >> 1;
  if (m >= pos) {
    update(pos, c, l, m, o << 1);
  } else {
    update(pos, c, m + 1, r, o << 1 | 1);
  }
  pushup(o);
}
int main() {
  int n;
  scanf("%d", &n);
  for (int i = 0; i < n; ++i) {
    scanf("%s", cmd);
    if (cmd[0] == 'a') {
      p[i].op = 0;
      scanf("%d", &p[i].v);
      a[cnt++] = p[i].v;
    } else if (cmd[0] == 'd') {
      p[i].op = 1;
      scanf("%d", &p[i].v);
      a[cnt++] = p[i].v;
    } else {
      p[i].op = 2;
    }
  }
  sort(a, a + cnt);
  cnt = unique(a, a + cnt) - a;
  memset(nod, 0, sizeof nod);
  for (int i = 0; i < n; ++i) {
    if (p[i].op == 2) {
      printf("%I64d\n", nod[1].sum[3]);
    } else if (p[i].op == 0) {
      update(get(p[i].v), 1, 1, n, 1);
    } else {
      update(get(p[i].v), 0, 1, n, 1);
    }
  }
  return 0;
}
