CF769B News About Credit

题目描述

Polycarp 就读于一所大学,他所在的小组共有 $n$ 名学生(包括他自己)。他们都注册了社交网络 "TheContacnt!"。 并不是所有学生都同样善于交际。已知每个学生 $i$ 的数值 $a_i$,表示第 $i$ 个学生每天最多愿意发送的消息数量。学生不能给自己发送消息。 清晨时分,Polycarp 得知了一个重要消息——编程测试将在明天进行。因此,必须紧急通知所有同学这一消息,使用私信的方式。 你的任务是制定一个私信计划,使得: - 对于每个学生 $i$($1 \le i \le n$),他发送的消息数量不超过 $a_i$; - 所有学生都知晓编程测试的消息(初始时,只有 Polycarp 自己知道); - 只有已经知晓消息的学生,才能通知其他学生。 假设所有学生编号为 $1$ 到 $n$,Polycarp 的编号总是 $1$。 你无需使消息数最少,也无需最优化任何其它参数——只需找到一种方式满足上述条件即可。

输入格式

第一行包含一个正整数 $n$($2 \le n \le 100$),表示学生人数。 第二行包含 $a_1, a_2, \ldots, a_n$($0 \le a_i \le 100$),其中 $a_i$ 表示第 $i$ 个学生每天最多能发送的消息数。Polycarp 总是编号 $1$。

输出格式

如果不可能通知所有学生,输出 $-1$。 否则,首先输出一个整数 $k$,表示发送的消息总数。之后的 $k$ 行,每行包含两个不同的整数 $f$ 和 $t$,表示编号为 $f$ 的学生向编号为 $t$ 的学生发送了消息。所有消息应按照实际发送顺序给出,即每个发送消息的学生必须已经知晓此消息。允许学生收到重复的消息。 如果有多种答案,可以输出其中任意一种。

说明/提示

在第一个样例中,Polycarp(编号 $1$)可以把消息发送给编号为 $2$ 的学生,然后该学生再把消息发送给编号为 $3$ 和 $4$ 的学生。这样所有学生就都知晓了编程测试信息。 由 ChatGPT 5 翻译