#include <bits/stdc++.h>
using namespace std;
const int Maxn = 1e5 + 100;
const int Max_tree = 4 * Maxn;
const int Max_val = 5;
vector<int> pos;
int n;
struct Q {
  string s;
  int x;
};
vector<Q> Qs;
int Get_pos(int x) {
  return lower_bound(pos.begin(), pos.end(), x) - pos.begin() + 1;
}
struct Node {
  long long val[Max_val];
  int cnt;
  int cur;
  void Shift(int T) {
    long long tmp[Max_val];
    for (int i = 0; i < Max_val; i++) {
      tmp[(i + T) % Max_val] = val[i];
    }
    for (int i = 0; i < Max_val; i++) val[i] = tmp[i];
  }
  void mem() {
    cnt = 0;
    cur = 0;
    for (int i = 0; i < Max_val; i++) val[i] = 0;
  }
};
void Merge(const Node &a, const Node &b, Node &c) {
  for (int i = 0; i < Max_val; i++)
    c.val[i] = a.val[i] + b.val[i], c.cnt = a.cnt + b.cnt;
}
struct Segmentree {
  int l[Max_tree];
  int r[Max_tree];
  Node sum[Max_tree];
  void build(int i, int j, int x) {
    l[x] = i;
    r[x] = j;
    sum[x].mem();
    if (i == j) return;
    int mid = i + j >> 1;
    build(i, mid, x << 1);
    build(mid + 1, j, x << 1 | 1);
  }
  void update(int x, int pos, long long w) {
    if (l[x] > pos || r[x] < pos) return;
    if (l[x] == r[x]) {
      sum[x].mem();
      sum[x].val[1] = w;
      sum[x].cnt = !!w;
      sum[x].cur = 0;
      return;
    }
    update(x << 1, pos, w);
    update(x << 1 | 1, pos, w);
    int cnt = sum[x << 1].cnt;
    cnt %= 5;
    sum[x << 1 | 1].Shift(5 - sum[x << 1 | 1].cur);
    sum[x << 1 | 1].Shift(cnt);
    sum[x << 1 | 1].cur = cnt;
    Merge(sum[x << 1], sum[x << 1 | 1], sum[x]);
    sum[x].cur = 0;
    return;
  }
  long long Get() { return sum[1].val[3]; }
} Tree;
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  cin >> n;
  for (int i = 1; i <= n; i++) {
    string t;
    int x = 0;
    cin >> t;
    if (t == "add" || t == "del") {
      cin >> x;
      Qs.push_back({t, x});
      pos.push_back(x);
    } else
      Qs.push_back({t, x});
  }
  Tree.build(1, n, 1);
  sort(pos.begin(), pos.end());
  for (auto x : Qs) {
    string t = x.s;
    if (t == "add") {
      long long val = x.x;
      int Posison = Get_pos(val);
      Tree.update(1, Posison, val);
    } else if (t == "del") {
      long long val = x.x;
      int Posison = Get_pos(val);
      Tree.update(1, Posison, 0);
    } else {
      cout << Tree.Get() << "\n";
    }
  }
  return 0;
}
