#include <bits/stdc++.h>
using namespace std;
template <typename Type>
struct SizeBalanceTree {
  int root, sz, SZ[100010], LC[100010], RC[100010];
  long long SUM[100010][5];
  Type K[100010];
  inline void Insert(Type key) { Insert(root, key); }
  inline void Delete(Type key) { Delete(root, key); }
  inline void Clear() { sz = root = 0; }
  inline long long Eval() { return SUM[root][2]; }
  void Insert(int &root, Type key) {
    if (!root) {
      root = ++sz;
      K[root] = SUM[root][0] = key, SZ[root] = 1;
      LC[root] = RC[root] = 0;
      for (int i = 1; i < 5; i++) SUM[root][i] = 0;
      return;
    }
    SZ[root]++;
    if (key < K[root]) {
      Insert(LC[root], key);
    } else {
      Insert(RC[root], key);
    }
    maintain(root, !(key < K[root]));
    PushUp(root);
  }
  Type Delete(int &root, Type key) {
    SZ[root]--;
    Type ret = K[root];
    if (K[root] == key || key < K[root] && !LC[root] ||
        K[root] < key && !RC[root]) {
      if (!LC[root] || !RC[root])
        root = LC[root] + RC[root];
      else
        K[root] = Delete(LC[root], K[root] + 1);
    } else if (key < K[root])
      ret = Delete(LC[root], key);
    else
      ret = Delete(RC[root], key);
    PushUp(root);
    return ret;
  }
  inline void PushUp(int root) {
    for (int i = 0; i < 5; i++) SUM[root][i] = SUM[LC[root]][i];
    SUM[root][SZ[LC[root]] % 5] += K[root];
    for (int i = 0; i < 5; i++)
      SUM[root][(i + SZ[LC[root]] + 1) % 5] += SUM[RC[root]][i];
  }
  inline void LeftRotate(int &root) {
    int temp = RC[root];
    RC[root] = LC[temp];
    LC[temp] = root;
    SZ[temp] = SZ[root];
    SZ[root] = 1 + SZ[LC[root]] + SZ[RC[root]];
    PushUp(root), PushUp(temp);
    root = temp;
  }
  inline void RightRotate(int &root) {
    int temp = LC[root];
    LC[root] = RC[temp];
    RC[temp] = root;
    SZ[temp] = SZ[root];
    SZ[root] = 1 + SZ[LC[root]] + SZ[RC[root]];
    PushUp(root), PushUp(temp);
    root = temp;
  }
  void maintain(int &root, bool flag) {
    if (root == 0) return;
    if (!flag) {
      if (SZ[LC[LC[root]]] > SZ[RC[root]]) {
        RightRotate(root);
      } else if (SZ[RC[LC[root]]] > SZ[RC[root]]) {
        LeftRotate(LC[root]);
        RightRotate(root);
      } else {
        return;
      }
    } else {
      if (SZ[RC[RC[root]]] > SZ[LC[root]]) {
        LeftRotate(root);
      } else if (SZ[LC[RC[root]]] > SZ[LC[root]]) {
        RightRotate(RC[root]);
        LeftRotate(root);
      } else {
        return;
      }
    }
    maintain(LC[root], false);
    maintain(RC[root], true);
    maintain(root, false);
    maintain(root, true);
  }
};
SizeBalanceTree<int> SBT;
int main(int argc, const char *argv[]) {
  int n;
  while (scanf("%d", &n) != EOF) {
    SBT.Clear();
    for (int i = 0; i < n; i++) {
      char s[10];
      scanf("%s", s);
      if (s[0] == 's')
        printf("%I64d\n", SBT.Eval());
      else {
        int x;
        scanf("%d", &x);
        if (s[0] == 'a')
          SBT.Insert(x);
        else
          SBT.Delete(x);
      }
    }
  }
  return 0;
}
