你的社交媒体公司 ConnectHub 为信息在其网络中传播的便捷性感到自豪。
用户可以使用分享按钮直接与他们的关注者(followers)分享帖子,也可以通过在评论中回复来与他们关注的账号(following)分享。ConnectHub 以其用户的病毒式传播力(virality)而闻名:来自任何账号的帖子都能够到达其他所有账号,这可能通过一系列的分享和评论链来实现。
但灾难降临了:一次数据库事故抹去了所有关于谁关注了谁的记录。不过,有一部分数据可能幸存了下来——对于每个账号,你拥有其关注者数量以及它关注的账号数量。也许甚至这些数字也已经被损坏了,但这就是你所拥有的全部数据。
你的任务是重建缺失的数据库,使得这些计数正确,并且 ConnectHub 再次拥有完全的病毒式传播力。
输入格式
输入包含:
- 第一行包含一个整数 $n$,表示账号的数量,满足 $1 \le n \le 100\,000$。
- 第二行包含 $n$ 个整数 $a_1, \dots, a_n$,对于每个 $i$ 满足 $0 \le a_i \le n$,其中 $a_i$ 是第 $i$ 个账号关注的账号数量。
- 第三行包含 $n$ 个整数 $b_1, \dots, b_n$,对于每个 $i$ 满足 $0 \le b_i \le n$,其中 $b_i$ 是关注第 $i$ 个账号的账号数量。
此外,保证:
$$\sum_{i=1}^{n} a_i + \sum_{i=1}^{n} b_i \le 2\,000\,000$$
请注意,输入并不保证一定能进行任何重建(无论是否具有完全的病毒式传播力)。对于熟悉相关术语的人来说,完全的病毒式传播力等价于弱连通性(weak connectivity)。
输出格式
如果可以重建,输出一个网络:
- 第一行包含两个整数:账号数量 $n$ 和连接数量 $m$。此处的 $n$ 必须与输入中的 $n$ 相同。
- 接下来的 $m$ 行,每行包含两个整数 $a$ 和 $b$,表示账号 $a$ 关注了账号 $b$。
否则输出 "impossible"。
请注意,不允许一个账号多次关注同一个账号,也不允许关注自身。
样例
输入样例 1
5 2 1 2 1 3 0 2 2 3 2
输出样例 1
5 9 2 4 4 5 3 5 3 2 5 2 1 3 1 4 5 3 5 4
输入样例 2
3 2 2 1 1 1 2
输出样例 2
impossible