HT 巨巨的磁盘
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

HT 巨巨有个 n 个块(物理块)的磁盘,每个块只有被占用、空闲两种状态。我们赋予 n 个块 1n 的编号,初始所有块都是空闲的。

对这个磁盘有两种操作:

- `1 x`,表示把第 x 个块的状态翻转,即如果当前被占用则释放,如果是空闲的则占用。
- `2 x`,表示询问占用 x 个块的文件最早可以安排在哪里。即找到编号最小的连续 x 块空闲,输出其左右端点的编号。如果不存在,输出 -1

输入描述:

第一行有两个正整数 n, q,其中 

接下来 q 行,每行有两个正整数 op, x,表示询问,其中

输出描述:

对于每个操作 2,分别用一行输出答案。如果答案存在,那么输出两个正整数 l, r,表示这个区间的左右端点编号;如果不存在,输出 -1
示例1

输入

复制
5 7
2 3
1 2
2 3
1 4
2 3
1 2
2 3

输出

复制
1 3
3 5
-1
1 3