薇尔莉特能拿多少棵碧根果
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

某天,薇尔莉特突然找不到谷雨学姐了,因为谷雨学姐是她的好朋友,薇尔莉特有很重要的信件要送给谷雨学姐。
谷雨学姐很喜欢吃碧根果。现在有 n 个地点,在第 i 个地点上有 a_{i} 个碧根果,同时有 m有向的道路,薇尔莉特可以在这些道路中移动。

薇尔莉特在第 i 个位置可以选择拿碧根果,她可以拿小于等于 a_{i} 数量的碧根果也可以选择不拿碧根果。无论拿还是不拿,薇尔莉特走后,第 i 个位置的碧根果数量都会恢复到 a_{i} 。为了见到谷雨学姐,薇尔莉特需要集齐尽可能多的碧根果,但最多不会超过 10^{8} ,因为再多薇尔莉特的口袋就装不下啦!

现在,聪明的你可以告诉薇尔莉特,在拿到碧根果最多的前提下,薇尔莉特可以从哪些点出发吗?请输出拿到最多碧根果的个数和可以拿到最多碧根果个数的出发点的个数。

输入描述:

第一行包含两个整数n(1 \leq n \leq 2 \times 10^{5}),和m(0 \leq m \leq 2 \times 10^{5}),分别表示有有 n 个地点和 m 条有向的道路。
第二行包含 n 个整数 a_{1},a_{2},a_{3}, \dots , a_{n},其中 a_i(1 \leq a_{i} \leq 10 ^ 8) 表示第 i 个地点上有多少个碧根果。
接下来m行,每行包含两个整数 u, v (1 \leq u, v \leq n) ,表示地点 u 有一条通向地点v 的有向道路。(u \neq v) 

输出描述:

输出两行。第一行表示可以作为起点的数量。第二行表示可以拿到的最多的碧根果的数量。
示例1

输入

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

输出

复制
4
100000000

说明

谷雨学姐从地点 1, 2, 3, 4 出发都能最多拿 10^8 个碧根果。