#CF1935B. MAC 中的信息学

MAC 中的信息学

每个测试用例时间限制:11 每个测试用例内存限制:256256 兆字节

在硕士助教中心,Nyam-Nyam 拿到了一份信息学作业。

给定一个长度为 nn 的数组 aa,你需要将它划分为 k>1k > 1 个子段,使得每个子段的 MEX 都等于同一个整数

请你帮 Nyam-Nyam 找到任意一种满足条件的划分方案,或判定该方案不存在。


† 划分定义

将数组划分为 kk 个子段,定义为 kk 个整数对 (l1,r1),(l2,r2),,(lk,rk)(l_1, r_1), (l_2, r_2), \dots, (l_k, r_k),满足:

  • 对所有 1ik1 \le i \le k,有 liril_i \le r_i
  • 对所有 1jk11 \le j \le k-1,有 lj+1=rj+1l_{j+1} = r_j + 1
  • l1=1l_1 = 1rk=nr_k = n

这些整数对对应了划分出的子段本身。


‡ MEX 定义

数组的 MEX 是不在数组中出现的最小非负整数

例如:

  • 数组 [2,2,1][2, 2, 1] 的 MEX 是 00,因为 00 不在数组中;
  • 数组 [3,1,0,1][3, 1, 0, 1] 的 MEX 是 22,因为 0011 都在数组中,但 22 不在;
  • 数组 [0,3,1,2][0, 3, 1, 2] 的 MEX 是 44,因为 0,1,2,30, 1, 2, 3 都在数组中,但 44 不在。

输入

每个测试用例包含多组数据。第一行是一个整数 tt1t1041 \le t \le 10^4),表示测试用例的数量。

每组测试用例的格式如下:

  • 第一行:一个整数 nn2n1052 \le n \le 10^5),表示数组 aa 的长度。
  • 第二行:nn 个整数 a1,a2,,ana_1, a_2, \dots, a_n0ai<n0 \le a_i < n),表示数组 aa 的元素。

保证所有测试用例的 nn 之和不超过 10510^5


输出

对于每组测试用例:

  • 如果不存在满足条件的划分,输出 1-1
  • 否则:
    1. 第一行输出一个整数 kk2kn2 \le k \le n),表示划分的子段数量。
    2. 接下来 kk 行,每行输出两个整数 lil_irir_i1lirin1 \le l_i \le r_i \le n),表示第 ii 个子段的左右边界。

必须满足以下条件:

  • 对所有 1jk11 \le j \le k-1,有 lj+1=rj+1l_{j+1} = r_j + 1
  • l1=1l_1 = 1rk=nr_k = n

如果存在多种可行方案,输出任意一种即可。


样例

输入

5
2
0 0
5
0 1 2 3 4
8
0 1 7 1 0 1 0 3
3
2 2 2
4
0 1 2 0

输出

2
1 1
2 2
-1
3
1 3
4 5
6 8
3
1 1
2 2
3 3
-1

样例说明

  • 第一组测试用例:数组可划分为 [1,1][1, 1][2,2][2, 2] 两个子段:

    • 第一个子段 [0][0] 的 MEX 是 1100 存在,11 不存在);
    • 第二个子段 [0][0] 的 MEX 是 1100 存在,11 不存在)。
  • 第二组测试用例:可以证明,不存在满足要求的划分。

  • 第三组测试用例:数组可划分为 [1,3],[4,5],[6,8][1, 3], [4, 5], [6, 8] 三个子段:

    • 第一个子段 [0,1,7][0, 1, 7] 的 MEX 是 220,10, 1 存在,22 不存在);
    • 第二个子段 [1,0][1, 0] 的 MEX 是 220,10, 1 存在,22 不存在);
    • 第三个子段 [1,0,3][1, 0, 3] 的 MEX 是 220,10, 1 存在,22 不存在)。