镇上有 $n$ 个人。每个人都有一定的容量 $c_i$,表示其家中可以存放礼物的数量。
镇上还存在 $m$ 段友谊。每段友谊都有一个“导师”,对应友谊中索引较大的一方。
最初,镇上没有人拥有礼物。每天,圣诞老人都会来到镇上,指派一名精灵给索引为 1 的镇民送一份礼物。不幸的是,这名精灵还有很多工作要做。
如果精灵给一位镇民送礼物,而该镇民的房子在收到礼物后不会装满,他们就会接受这份礼物。然而,如果该镇民的房子因为这份礼物而恰好装满,他们会扔掉所有的礼物(清空房子),并让精灵给该镇民的每一位导师各送一份礼物,按索引递增的顺序进行。任何剩余的礼物将被扔进镇上的焚化炉。
精灵想知道,如果一位镇民的导师数量多于要送出的礼物数量会怎样,但幸运的是,所有镇民家中的容量都至少等于他们的导师数量。
然而,精灵送礼物的方式还有一些额外的复杂性。当精灵正在完成一个送礼订单时,他们可以尝试给另一个快要装满的房子送礼物,从而引发嵌套请求。在这种情况下,精灵总是会优先处理最近的请求(通过跟踪一个待执行请求的“调用栈”)。可以证明,精灵全天的行动将在有限的操作次数内完成。
圣诞老人注意到镇上的送礼闹剧,担心圣诞节那天镇上将不会剩下任何礼物,因为它们都会被扔进焚化炉。他委托你找出镇上所有房子的礼物数量首次全部为零的那一天。如果这一天永远不会到来,则输出 $-1$。
如果是正数情况,由于答案可能很大,请计算该天数对 $998244353$ 取模的结果。
注意:在整个送礼过程中,没有任何房子的礼物数量会超过其容量。当某人收到礼物并达到容量上限时,他们会立即扔掉所有礼物。
输入格式
第一行包含两个整数 $n, m$ ($1 \le n \le 10^4, 0 \le m \le 3 \cdot 10^4$),分别表示镇上的人数和友谊的数量。
第二行包含 $c_1, c_2, \dots, c_n$ ($2 \le c_i \le 10^5$),表示每个人的房屋容量。
接下来的 $m$ 行,每行包含两个整数 $u_i, v_i$ ($1 \le u_i < v_i \le n$),表示第 $i$ 段友谊中的两人。保证所有列出的友谊都是不同的。
输出格式
输出所有房子的礼物数量首次全部为零的时间。由于该时间可能很大,请输出其对 $998244353$ 取模的值。如果不存在这样的时间,输出 $-1$。
样例
样例输入 1
5 10 4 3 2 2 2 1 3 3 4 1 4 1 5 2 5 2 4 1 2 2 3 3 5 4 5
样例输出 1
24
样例输入 2
3 0 95 13 77
样例输出 2
95
样例输入 3
12 14 6 7 17 16 20 14 17 16 6 11 6 14 4 11 3 5 2 5 9 11 7 12 1 3 5 9 3 7 3 8 4 9 1 9 4 7 2 11 1 12
样例输出 3
8739360