#include <bits/stdc++.h>
using namespace std;
struct SegmentTree {
  int left, right, cnt;
  long long sum[5];
  int mid() { return (left + right) >> 1; }
} f[401000];
char op[101000][10];
int num[101000];
int temp[101000];
int cnt;
void build(int left, int right, int k) {
  f[k].left = left, f[k].right = right, f[k].cnt = 0;
  for (int i = 0; i < 5; i++) f[k].sum[i] = 0;
  if (left == right) return;
  int mid = f[k].mid();
  build(left, mid, k << 1);
  build(mid + 1, right, k << 1 | 1);
}
void push_up(int k) {
  for (int i = 0; i < 5; i++) {
    f[k].sum[i] =
        f[k << 1].sum[i] + f[k << 1 | 1].sum[((i - f[k << 1].cnt) % 5 + 5) % 5];
  }
}
void update(int idx, int val, int flag, int k) {
  f[k].cnt += flag;
  if (f[k].left == f[k].right) {
    f[k].sum[0] += (long long)val;
    return;
  }
  int mid = f[k].mid();
  if (idx > mid) {
    update(idx, val, flag, k << 1 | 1);
  } else {
    update(idx, val, flag, k << 1);
  }
  push_up(k);
}
int main() {
  int n;
  while (scanf("%d", &n) != EOF) {
    cnt = 0;
    for (int i = 0; i < n; i++) {
      scanf("%s", op[i]);
      if (op[i][0] != 's') {
        scanf("%d", &temp[i]);
        num[cnt++] = temp[i];
      }
    }
    sort(num, num + cnt);
    int k = cnt, cnt = 1;
    for (int i = 1; i < k; i++)
      if (num[i] != num[i - 1]) num[cnt++] = num[i];
    build(1, n, 1);
    for (int i = 0; i < n; i++) {
      int idx = lower_bound(num, num + cnt, temp[i]) - num;
      if (op[i][0] == 'a')
        update(idx, temp[i], 1, 1);
      else if (op[i][0] == 'd')
        update(idx, -temp[i], -1, 1);
      else {
        cout << f[1].sum[2] << endl;
      }
    }
  }
  return 0;
}
