import java.io.*;

import java.awt.geom.Point2D;
import java.text.*;
import java.math.*;
import java.util.*;

public class Main implements Runnable {

	final String filename = "";
	long[] nul = new long[5];

	public void solve() throws Exception {
		Random r = new Random(32167);
		node tree = null;
		int n = iread();
//		int[] test = new int[n-1];
		for (; n > 0; n--) {
			String cmd = readword();
//			String cmd = (n==1)?"show":"add";
			if (cmd.equals("add")) {
				int x = iread();
//				int x = r.nextInt(100000);
//				test[n-2] = x;
				node nn = new node(x, r.nextInt());
				node temp = split(tree, x);
				tree = merge(temp.left, nn);
				tree = merge(tree, temp.right);
			} else if (cmd.equals("del")) {
				int x = iread();
				node temp = split(tree, x);
				tree = temp.left;
				temp = split(temp.right, x + 1);
				tree = merge(tree, temp.right);
			} else {
				long ans = 0;
				if (tree != null)
					ans = tree.med[2];
				out.write(ans + "\n");
			}
		}	
//		Arrays.sort(test);
//		long ans = 0; 
//		for (int i=2; i<test.length; i+=5)
//			ans+=test[i];
//		System.out.println(ans);
	}

	long[] med(node T) {
		if (T == null)
			return nul;
		return T.med;
	}

	int cnt(node T) {
		if (T == null)
			return 0;
		return T.cnt;
	}

	void upd(node T) {
		if (T == null)
			return;
		T.cnt = cnt(T.left) + cnt(T.right) + 1;
		long[] m_left = med(T.left);
		long[] m_right = med(T.right);
		int cnt = cnt(T.left);
		int shift = cnt % 5;
		shift = 4 - shift;
		for (int i = 0; i < 5; i++)
			T.med[i] = m_left[i] + m_right[(i + shift) % 5];
		T.med[cnt % 5] += T.key;
	}

	node split(node T, int key) {
		node res;
		if (T == null)
			return new node(-1, -1);
		if (key <= T.key) {
			res = split(T.left, key);
			T.left = res.right;
			res.right = T;
		} else {
			res = split(T.right, key);
			T.right = res.left;
			res.left = T;
		}
		upd(T);
		return res;
	}

	node merge(node left, node right) {
		node res;
		if (left == null)
			res = right;
		else if (right == null)
			res = left;
		else if (left.prior > right.prior) {
			left.right = merge(left.right, right);
			res = left;
		} else {
			right.left = merge(left, right.left);
			res = right;
		}
		upd(res);
		return res;
	}

	class node {
		node left, right, parent;
		int key, prior, cnt;
		long[] med;

		public node() {
			key = -1;
			prior = -1;
			cnt = -1;
		}

		public node(int key, int prior) {
			this.prior = prior;
			this.key = key;
			med = new long[5];
			med[0] += key;
			cnt = 1;
		}
	}

	public void run() {
		try {
			in = new BufferedReader(new InputStreamReader(System.in));
			out = new BufferedWriter(new OutputStreamWriter(System.out));
			// in = new BufferedReader(new FileReader(filename+".in"));
			// out = new BufferedWriter(new FileWriter(filename+".out"));
			solve();
			out.flush();
		} catch (Exception e) {
			e.printStackTrace();
			System.exit(1);
		}
	}

	public int iread() throws Exception {
		return Integer.parseInt(readword());
	}

	public double dread() throws Exception {
		return Double.parseDouble(readword());
	}

	public long lread() throws Exception {
		return Long.parseLong(readword());
	}

	BufferedReader in;

	BufferedWriter out;

	public String readword() throws IOException {
		StringBuilder b = new StringBuilder();
		int c;
		c = in.read();
		while (c >= 0 && c <= ' ')
			c = in.read();
		if (c < 0)
			return "";
		while (c > ' ') {
			b.append((char) c);
			c = in.read();
		}
		return b.toString();
	}

	public static void main(String[] args) {
		try {
			Locale.setDefault(Locale.US);
		} catch (Exception e) {

		}
		// new Thread(new Main()).start();
		new Thread(null, new Main(), "1", 1 << 25).start();
	}
}