import java.util.*;
import java.io.*;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());
        NavigableMap<Integer, Integer> algorithm = new TreeMap<>();
        for (int i = 0; i < n; i++) {
            String log = br.readLine();
            String[] index = log.split(" ");
            String number = log.startsWith("undo") ? index[2] : index[1];
            for (String part : number.split(",")) {
                int L = part.contains("-") ? Integer.parseInt(part.split("-")[0]) :
                        Integer.parseInt(part);
                int R = part.contains("-") ? Integer.parseInt(part.split("-")[1]) :
                        Integer.parseInt(part);
                if (!log.startsWith("undo")) {
                    Map.Entry<Integer, Integer> leftEntry = algorithm.floorEntry(L);
                    if (leftEntry != null && leftEntry.getValue() >= L - 1) {
                        L = leftEntry.getKey();
                        R = Math.max(leftEntry.getValue(), R);
                        algorithm.remove(leftEntry.getKey());
                    }
                    Map.Entry<Integer, Integer> rightEntry = algorithm.ceilingEntry(L);
                    while (rightEntry != null && rightEntry.getKey() <= R + 1) {
                        R = Math.max(rightEntry.getValue(), R);
                        algorithm.remove(rightEntry.getKey());
                        rightEntry = algorithm.ceilingEntry(L);
                    }
                    algorithm.put(L, R);
                } else{
                    Map<Integer,Integer> remove = new HashMap<>();
                    Map.Entry<Integer, Integer> leftEntry = algorithm.floorEntry(L);
                    if(leftEntry != null && leftEntry.getValue() >= L){
                        remove.put(leftEntry.getKey(),leftEntry.getValue());
                        algorithm.remove(leftEntry.getKey());
                    }
                    Map.Entry<Integer, Integer> rightEntry = algorithm.ceilingEntry(L);
                    while(rightEntry != null && rightEntry.getKey() <= R){
                        remove.put(rightEntry.getKey(),rightEntry.getValue());
                        algorithm.remove(rightEntry.getKey()); 
                        rightEntry = algorithm.ceilingEntry(L);
                    }
                    for(Map.Entry<Integer,Integer> r : remove.entrySet()){
                        if(r.getKey()<L){
                            algorithm.put(r.getKey(),L-1);
                        }
                        if(r.getValue()>R){
                            algorithm.put(R+1, r.getValue());
                        }
                    }
                }
            }
        }
        boolean first = true;
        StringBuilder sb = new StringBuilder();
        for(NavigableMap.Entry<Integer, Integer> a: algorithm.entrySet()){
            if(!first){
                sb.append(",");
            }
            first=false;
            if(!a.getKey().equals(a.getValue())){
                sb.append(a.getKey()).append("-").append(a.getValue());
            }else{
                sb.append(a.getKey());
            }
        }
        System.out.print(sb.toString());
    }
}