战术通信:终端基站的构造
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
Special Judge, 64bit IO Format: %lld

题目描述

\hspace{15pt}awdec 和 Exusiai1 正在联合规划一片新区域的战术通信网络。
\hspace{15pt}该区域共有 n 个基站,编号从 1n。为了保证通信的效率且不浪费资源,他们需要建立恰好 n-1 条双向通信链路,使得所有基站连通。
\hspace{15pt}作为外勤专家的 Exusiai1 提出,为了进行隐蔽的战术打击,网络中必须存在恰好 L 个“终端基站”。所谓“终端基站”,是指在通信网络中只与唯一一个其他基站相连的基站。
\hspace{15pt}然而,总工程师 awdec 指出,受到硬件设备的限制,每个基站 i 最多只能连接 d_i 条通信链路。
\hspace{15pt}现在,他们需要你提供一套满足所有条件的网络拓扑图纸。
\hspace{15pt}如果有多种合法的方案,你只需要输出任意一种即可。如果不存在满足所有条件的方案,请报告无解。

输入描述:

\hspace{15pt}每个测试文件均包含多组测试数据。第一行输入一个整数 T\left(1\le T\le 100\right) 代表数据组数,每组测试数据描述如下:

\hspace{15pt}第一行包含两个正整数 n\left(2\le n\le 2\times 10^5\right)L\left(1\le L< n\right),分别表示基站的数量和要求的“终端基站”数量。
\hspace{15pt}第二行包含 n 个整数 d_1, d_2, \dots, d_n\left(1\le d_i<n\right),表示每个基站允许连接的最多通信链路。

\hspace{15pt}除此之外,保证单个测试文件的 n 之和不超过 2\times 10^5

输出描述:

\hspace{15pt}对于每组测试数据,新起一行。

\hspace{15pt}如果存在合法的构造方案,输出 n-1 行,每行包含两个正整数 uv,表示在基站 u 和基站 v 之间连接一条通信链路。你可以以任意顺序输出这些通信链路。
\hspace{15pt}如果不存在满足所有条件的方案,仅输出一行一个整数 -1。

\hspace{15pt}如果存在多个解决方案,您可以输出任意一个,系统会自动判定是否正确。注意,自测运行功能可能因此返回错误结果,请自行检查答案正确性。
示例1

输入

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

输出

复制
1 2
1 3
1 4
2 5
-1
1 2
1 3
1 4