集合操作
时间限制:C/C++/Rust/Pascal 5秒,其他语言10秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
64bit IO Format: %lld

题目描述

    有一个集合S,刚开始是空集,现在有3种操作。
    1.往集合中添加x,如果集合中已经存在x,则不添加。
    2.从集合中删除x,如果集合中不存在x,则不删除。
    3.查询大于等于x且不在集合S中的最小的正整数

输入描述:

第一行输入n,表示有n次操作
接下来n行,每行输入两个正整数id和x。 
id表示执行的操作序号
1<=n<=1000000,1<=id<=3,1<=x<=1000 000 000

输出描述:

对于每一个操作3,输出一个正整数表示查询到的结果
示例1

输入

复制
5
1 3
1 5
3 3
3 4
3 5

输出

复制
4
4
6