#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 7;
int n, x[N], p[N];
char str[10], op[N];
vector<int> V;
template <typename T>
void rshift(T a[], int n, int diff) {
  diff %= n;
  reverse(a, a + n);
  reverse(a, a + diff);
  reverse(a + diff, a + n);
}
struct SegTree {
  int add[N << 2];
  long long sum[N << 2][5];
  void build(int t, int l, int r) {
    if (l == r) {
      p[l] = t;
    } else {
      int z = (l + r) >> 1;
      build(((t) << 1), l, z), build(((t) << 1 | 1), z + 1, r);
    }
  }
  void up(int t) {
    for (int i = (0); i < (5); ++i)
      sum[t][i] = sum[((t) << 1)][i] + sum[((t) << 1 | 1)][i];
  }
  void down(int t) {
    if (add[t]) {
      add[((t) << 1)] += add[t], rshift(sum[((t) << 1)], 5, add[t]);
      add[((t) << 1 | 1)] += add[t], rshift(sum[((t) << 1 | 1)], 5, add[t]);
      add[t] = 0;
    }
  }
  void upd(int t, int l, int r, int L, int R, int V) {
    if (L > R) return;
    if (L <= l && r <= R) {
      add[t] += V;
      rshift(sum[t], 5, V);
      return;
    }
    down(t);
    int z = (l + r) >> 1;
    if (L <= z) upd(((t) << 1), l, z, L, R, V);
    if (R > z) upd(((t) << 1 | 1), z + 1, r, L, R, V);
    up(t);
  }
  long long qry(int t, int l, int r, int L, int R, int M) {
    if (L > R) return 0;
    if (L <= l && r <= R) return sum[t][M];
    down(t);
    int z = (l + r) >> 1;
    long long ret = 0;
    if (L <= z) ret += qry(((t) << 1), l, z, L, R, M);
    if (R > z) ret += qry(((t) << 1 | 1), z + 1, r, L, R, M);
    up(t);
    return ret;
  }
} seg;
struct Fenwick {
  int n, c[N];
  void init(int _n) { n = _n, memset(c, 0, sizeof(c[0]) * (n + 1)); }
  void upd(int i, int v) {
    while (i <= n) {
      c[i] += v;
      i += i & -i;
    }
  }
  int qry(int i) {
    int r = 0;
    while (i > 0) {
      r += c[i];
      i -= i & -i;
    }
    return r;
  }
} fw;
int main() {
  scanf("%d", &n);
  for (int i = (0); i < (n); ++i) {
    scanf(" %s", str);
    op[i] = str[0];
    if (op[i] != 's') {
      scanf("%d", x + i);
      V.push_back(x[i]);
    }
  }
  sort((V).begin(), (V).end());
  V.erase(unique((V).begin(), (V).end()), V.end());
  fw.init(((int)(V).size())), seg.build(1, 1, ((int)(V).size()));
  for (int i = (0); i < (n); ++i) {
    if (op[i] != 's') {
      int flag = op[i] == 'a' ? 1 : -1;
      int v = lower_bound((V).begin(), (V).end(), x[i]) - V.begin() + 1;
      int rk = fw.qry(v) + 1;
      fw.upd(v, flag);
      seg.upd(1, 1, ((int)(V).size()), v, v, 0);
      seg.sum[p[v]][rk % 5] += flag * x[i];
      seg.upd(1, 1, ((int)(V).size()), v, v, 0);
      seg.upd(1, 1, ((int)(V).size()), v + 1, ((int)(V).size()),
              (flag + 5) % 5);
    } else {
      long long ans = seg.qry(1, 1, ((int)(V).size()), 1, ((int)(V).size()), 3);
      printf("%lld\n", ans);
    }
  }
  return 0;
}
