#include <bits/stdc++.h>
using namespace std;
const double PI = acos(-1.0);
const double EPS = 1e-6;
const long long oo = 1LL << 60;
const int INF = 0x3f3f3f3f;
const int MOD = 1e9 + 7;
const int N = 100005;
struct segTree {
  int num;
  long long sum[5];
} node[N << 2];
struct Query {
  int type, num;
} q[N];
void pushup(int rt) {
  node[rt].num = (node[(rt << 1)].num + node[(rt << 1 | 1)].num) % 5;
  int leftSonNum = node[(rt << 1)].num;
  for (int i = 0; i < 5; ++i)
    node[rt].sum[i] = node[(rt << 1)].sum[i] +
                      node[(rt << 1 | 1)].sum[(i - leftSonNum + 5) % 5];
}
void update(int l, int r, int rt, int p, int v) {
  if (l == r) {
    node[rt].num = (v > 0);
    node[rt].sum[1] = (v > 0 ? v : 0);
    return;
  }
  if (p <= ((l + r) >> 1))
    update(l, ((l + r) >> 1), (rt << 1), p, v);
  else
    update(((l + r) >> 1) + 1, r, (rt << 1 | 1), p, v);
  pushup(rt);
}
vector<int> arr;
int pos[N];
int main() {
  int n;
  char s[5];
  scanf("%d", &n);
  for (int i = 0; i < n; ++i) {
    scanf("%s", s);
    if (s[0] == 'a') {
      scanf("%d", &q[i].num);
      q[i].type = 1;
      arr.push_back(q[i].num);
    } else if (s[0] == 'd') {
      scanf("%d", &q[i].num);
      q[i].type = 2;
    } else
      q[i].type = 0;
  }
  sort((arr).begin(), (arr).end());
  arr.erase(unique((arr).begin(), (arr).end()), arr.end());
  for (int i = 0; i < n; ++i)
    if (q[i].type)
      pos[i] =
          lower_bound((arr).begin(), (arr).end(), q[i].num) - arr.begin() + 1;
  int siz = (int(arr.size()));
  for (int i = 0; i < n; ++i) {
    if (q[i].type == 1)
      update(1, siz, 1, pos[i], q[i].num);
    else if (q[i].type == 2)
      update(1, siz, 1, pos[i], -q[i].num);
    else
      printf("%I64d\n", node[1].sum[3]);
  }
  return 0;
}
