#include <bits/stdc++.h>
using namespace std;
const int N = 100005, M = 50005;
const int inf = 0x3f3f3f3f;
const long long INF = 1000000000000000000ll;
const long long mod = 998244353;
const double pi = acos(-1.0);
const double eps = 1e-6;
vector<int> rec;
struct OP {
  char str[4];
  int num;
  void get() {
    scanf("%s", str);
    if (str[0] == 'a' || str[0] == 'd') {
      scanf("%d", &num);
    }
  }
} op[N];
struct node {
  int l, r, cnt;
  long long num[5];
  int nt;
  void init() {
    memset(num, 0, sizeof(num));
    cnt = 0;
  }
  node() {}
  node(int l, int r, int nt) {
    this->l = l;
    this->r = r;
    this->nt = nt;
  }
  void Equal(node tmp) {
    for (int i = 0; i < 5; i++) {
      num[i] = tmp.num[i];
    }
    nt = tmp.nt;
    cnt = tmp.cnt;
  }
};
struct segTree {
  node tree[N * 4];
  void build(int l, int r, int id) {
    tree[id] = node(l, r, 1);
    tree[id].init();
    if (l == r) return;
    int mid = ((l + r) >> 1);
    build(l, mid, (id << 1));
    build(mid + 1, r, (id << 1 | 1));
  }
  void pushUp(int id) {
    tree[id].Equal(tree[(id << 1)]);
    int nt = tree[(id << 1)].nt;
    for (int i = 1, j = nt, cnt = 1; cnt <= 5;
         i = (i + 1) % 5, j = (j + 1) % 5, cnt++) {
      if (tree[(id << 1 | 1)].num[i] == 0) break;
      tree[id].num[j] += tree[(id << 1 | 1)].num[i];
    }
    tree[id].cnt += tree[(id << 1 | 1)].cnt;
    tree[id].nt = (tree[id].nt + tree[(id << 1 | 1)].cnt) % 5;
  }
  void update(int id, int pos, int val) {
    int l = tree[id].l, r = tree[id].r;
    if (l == r) {
      tree[id].num[1] += val;
      if (val > 0)
        tree[id].nt++, tree[id].cnt++;
      else
        tree[id].nt--, tree[id].cnt--;
      return;
    }
    int mid = ((l + r) >> 1);
    if (pos <= mid)
      update((id << 1), pos, val);
    else
      update((id << 1 | 1), pos, val);
    pushUp(id);
  }
} segT;
map<int, int> mp;
void discre() {
  sort(rec.begin(), rec.end());
  int siz = rec.size();
  for (int i = 0; i < siz; i++) {
    mp.insert(pair<int, int>(rec[i], i));
  }
}
int main() {
  int n;
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) {
    op[i].get();
    if (op[i].str[0] == 'a') rec.push_back(op[i].num);
  }
  discre();
  if (rec.size() == 0) {
    printf("0\n");
    return 0;
  }
  segT.build(0, rec.size() - 1, 1);
  for (int i = 1; i <= n; i++) {
    if (op[i].str[0] == 'a') {
      segT.update(1, mp[op[i].num], op[i].num);
    } else if (op[i].str[0] == 'd') {
      segT.update(1, mp[op[i].num], -op[i].num);
    } else {
      printf("%lld\n", segT.tree[1].num[3]);
    }
  }
}
