#include <iostream>
#include <cstdio>
#include <vector>
#include <map>
#include <algorithm>
#include <string.h>
#define MAXN 100010
#define Ls(x) (x<<1)
#define Rs(x) (x<<1|1)
#define Mid(x,y) ((x+y)>>1)
using namespace std;
int ls[MAXN*4],rs[MAXN*4];
long long m[MAXN*4][6];
int Tot;
int sum[MAXN+10];
int N;
bool v[MAXN];
char str[10];
pair <int,int> Que[MAXN];
map <int,int> hash;
vector <int> list;

int lowbit(int x){
    return x&(-x);
}

int add(int pos,int x){
    while (pos<Tot){
        sum[pos]+=x;
        pos+=lowbit(pos);
    }
    return 0;
}

int getSum(int pos){
    int ans=0;
    while (pos>0){
        ans+=sum[pos];
        pos-=lowbit(pos);
    }
    return ans;
}


void TreeBuild(int root,int lt,int rt){
    ls[root]=lt;
    rs[root]=rt;
    if (lt!=rt){
        int mid=Mid(lt,rt);
        TreeBuild(Ls(root),lt,mid);
        TreeBuild(Rs(root),mid+1,rt);
    }
}

void TreeAdd(int root,int pos){
    if (ls[root]==rs[root]){
        m[root][1]=list[pos-1];
        //cout<<m[root][1]<<endl;
    }
    else{
        int mid=Mid(ls[root],rs[root]);
        if (pos<=mid)
            TreeAdd(Ls(root),pos);
        else
            TreeAdd(Rs(root),pos);
        int tmp=getSum(mid)-getSum(ls[root]-1);
        for (int i=1;i<=5;++i)
            m[root][i]=m[Ls(root)][i];
        for (int i=1;i<=5;++i){
            int x=(tmp+i)%5;
            if (x==0) x=5;
            m[root][x]+=m[Rs(root)][i];
        }
    }
}

void TreeDel(int root,int pos){
    if (ls[root]==rs[root]){
        m[root][1]=0;
    }
    else{
        int mid=Mid(ls[root],rs[root]);
        if (pos<=mid)
            TreeDel(Ls(root),pos);
        else
            TreeDel(Rs(root),pos);
        int tmp=getSum(mid)-getSum(ls[root]-1);
        //cout<<"~"<<tmp<<endl;
        for (int i=1;i<=5;++i)
            m[root][i]=m[Ls(root)][i];
        for (int i=1;i<=5;++i){
            int x=(tmp+i)%5;
            if (x==0) x=5;
            m[root][x]+=m[Rs(root)][i];
        }
    }
}

int TreeGet(){
    return m[1][3];
}


void solve(){
   // cout<<Tot<<endl;
    memset(v,0,sizeof(v));
    memset(m,0,sizeof(m));
    TreeBuild(1,1,Tot);
    //cout<<"!"<<endl;
    for (int i=1;i<=N;++i){
        if (Que[i].first==0){
            if (v[hash[Que[i].second]]) continue;
            add(hash[Que[i].second],1);
            TreeAdd(1,hash[Que[i].second]);
            v[hash[Que[i].second]]=1;
        }
        if (Que[i].first==1){
            if (!v[hash[Que[i].second]]) continue;
            add(hash[Que[i].second],-1);
            TreeDel(1,hash[Que[i].second]);
            v[hash[Que[i].second]]=0;
        }
        if (Que[i].first==2){
            long long tmp=TreeGet();
            cout<<tmp<<endl;
        }
    }
    //for (int i=1;i<=5;++i)
        //cout<<i<<" "<<m[1][i]<<endl;
}


int main(){
    int p;
    //freopen("input.txt","r",stdin);
    scanf("%d\n",&N);
    for (int i=1;i<=N;++i){
        scanf("%s%d",str,&p);
        if (str[0]=='a') Que[i].first=0;
        if (str[0]=='s') Que[i].first=2;
        if (str[0]=='d') Que[i].first=1;
        Que[i].second=p;
        list.push_back(p);
    }
    sort(list.begin(),list.end());
    Tot=unique(list.begin(),list.end())-list.begin();
    //cout<<"!"<<endl;
    for (int i=0;i<Tot;++i)
        hash[list[i]]=i+1;
    solve();
    return 0;
}
