小红的无向图构造
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
Special Judge, 64bit IO Format: %lld

题目描述

小红希望你构造一个无向连通图,满足共有n个点m条边,且i号节点到 1 号节点的最短路长度恰好为a_i。你能帮帮她吗?

输入描述:

第一行输入两个正整数n,m,代表构造的图的点数和边数。
第二行输入n个整数a_i,代表i号节点到 1 号节点的最短路。
1\leq n,m \leq 10^5
a_1=0,对于i≥21\leq a_i \leq n-1

输出描述:

如果无解,请输出 -1。
否则输出m行,每行输出两个正整数u,v,代表节点u和节点v有一条边连接。
请务必保证不含重边和自环,否则将直接判为答案错误。
示例1

输入

复制
3 3
0 1 1

输出

复制
1 2
2 3
3 1
示例2

输入

复制
3 3
0 1 2

输出

复制
-1