#include <bits/stdc++.h>
using namespace std;
int bit[100005], n, dt;
set<int> ms;
vector<int> nums, ops;
void add(int pos, int val) {
  while (pos <= (int)nums.size()) {
    bit[pos] += val;
    pos += (-pos) & pos;
  }
}
int sum(int pos) {
  int res = 0;
  while (pos > 0) {
    res += bit[pos];
    pos -= (-pos) & pos;
  }
  return res;
}
struct range {
  int l, r, cnt, cov;
  long long sum[5];
  range(int L, int R) {
    l = L;
    r = R;
    cov = 0;
    cnt = 0;
    memset(sum, 0, sizeof(sum));
  }
  range() {
    l = r = cnt = cov = 0;
    memset(sum, 0, sizeof(sum));
  }
};
range operator+(range a, range b) {
  range c = a;
  c.r = b.r;
  c.cnt += b.cnt;
  int xb;
  for (xb = 0; xb < 5; xb++) c.sum[xb] += b.sum[(xb + 10 - b.cov + a.cov) % 5];
  return c;
}
range operator-(range a, range b) {
  range c = a;
  c.r = b.r;
  c.cnt -= b.cnt;
  int xb;
  for (xb = 0; xb < 5; xb++) c.sum[xb] -= b.sum[(xb + 10 - b.cov + a.cov) % 5];
  return c;
}
void proc(range &a, range b, int type) {
  int xb;
  if (type == 1) {
    a = a - b;
    a.cnt += b.cnt;
    for (xb = 0; xb < 5; xb++)
      a.sum[xb] += b.sum[(xb + 15 - b.cov + a.cov - 1) % 5];
  } else {
    a = a - b;
    a.cnt += b.cnt;
    for (xb = 0; xb < 5; xb++)
      a.sum[xb] += b.sum[(xb + 15 - b.cov + a.cov + 1) % 5];
  }
}
struct SegT {
  range tree[300005];
  void init(int pos, int l, int r) {
    tree[pos].l = l;
    tree[pos].r = r;
    memset(tree[pos].sum, 0, sizeof(tree[pos].sum));
    tree[pos].cnt = tree[pos].cov = 0;
    if (l != r) {
      int m = (l + r) / 2;
      init(pos * 2, l, m);
      init(pos * 2 + 1, m + 1, r);
    }
  }
  range query(int pos, int l, int r) {
    if (l <= tree[pos].l && r >= tree[pos].r) return tree[pos];
    int m = (tree[pos].l + tree[pos].r) / 2;
    range ret = range(tree[pos].l, 0);
    if (l <= m) ret = ret + query(pos * 2, l, r);
    if (r > m) ret = ret + query(pos * 2 + 1, l, r);
    ret.cov += tree[pos].cov;
    ret.r = tree[pos].r;
    ret.cov %= 5;
    return ret;
  }
  void addcov(int pos, int l, int r, int v) {
    if (l <= tree[pos].l && r >= tree[pos].r) {
      tree[pos].cov += v;
      tree[pos].cov %= 5;
      return;
    }
    int m = (tree[pos].l + tree[pos].r) / 2;
    if (l <= m) addcov(pos * 2, l, r, v);
    if (r > m) addcov(pos * 2 + 1, l, r, v);
  }
  void edit(int pos, int d, int rst, int type, int cov) {
    tree[pos].cnt += type;
    if (d == tree[pos].r) {
      tree[pos].sum[(rst - cov - tree[pos].cov + 10) % 5] += type * nums[d];
      if (tree[pos].l != tree[pos].r)
        edit(pos * 2 + 1, d, rst, type, (cov + tree[pos].cov) % 5);
      return;
    }
    range res = query(pos, d + 1, tree[pos].r);
    tree[pos].sum[(rst - cov - tree[pos].cov + 10) % 5] += type * nums[d];
    proc(tree[pos], res, type);
    int m = (tree[pos].l + tree[pos].r) / 2;
    if (d <= m) {
      edit(pos * 2, d, rst, type, (cov + tree[pos].cov) % 5);
      addcov(pos * 2 + 1, m + 1, tree[pos].r, type);
    } else {
      edit(pos * 2 + 1, d, rst, type, (cov + tree[pos].cov) % 5);
    }
  }
} T;
int Bsearch(int key) {
  int left = 1, right = (int)nums.size(), mid;
  while (left < right) {
    mid = (left + right) / 2;
    if (nums[mid] < key)
      left = mid + 1;
    else
      right = mid;
  }
  return left;
}
char inp[100005][10];
int main() {
  ms.clear();
  int xb, x2, op;
  scanf("%d", &n);
  if (n == 1) {
    scanf("%s", inp[0]);
    if (inp[0][0] == 's') printf("0");
    return 0;
  }
  for (xb = 0; xb < n; xb++) {
    scanf("%s", inp[xb]);
    if (inp[xb][0] == 'a') {
      scanf("%d", &op);
      ops.push_back(op);
      ms.insert(op);
    } else if (inp[xb][0] == 'd') {
      scanf("%d", &op);
      ops.push_back(op);
    } else
      ops.push_back(-1);
  }
  set<int>::iterator it;
  nums.push_back(-1);
  for (it = ms.begin(); it != ms.end(); it++) {
    nums.push_back(*it);
  }
  T.init(1, 1, nums.size() - 1);
  for (xb = 0; xb < n; xb++) {
    if (inp[xb][0] == 'a') {
      int d = Bsearch(ops[xb]), rst = sum(d - 1);
      add(d, 1);
      T.edit(1, d, rst, 1, 0);
    } else if (inp[xb][0] == 'd') {
      int d = Bsearch(ops[xb]), rst = sum(d - 1);
      add(d, -1);
      T.edit(1, d, rst, -1, 0);
    } else {
      range res = T.query(1, 1, nums.size() - 1);
      printf("%I64d\n", res.sum[(7 - res.cov) % 5]);
    }
  }
  return 0;
}
