#3558. 【国庆集训 Day2C】路径

【国庆集训 Day2C】路径

题面描述

给定一个长度为 nn 的序列 aa。同时给定 mm 个 无序二元组 (u,v)(u,v),你需要求出有多少从序列的位置 11 开始,到位置 nn 结束的路径,满足每次只能从 i→j(j>i)i \to j(j>i),且 ai,aja_i,a_j 出现在某个二元组中。

答案可能非常大,你只需要输出对 109+710^9 + 7 取模后的结果。

再次提醒:二元组是无序的, (u,v)(u,v) 和 (v,u)(v,u) 是等价的,uu 可以等于 vv。例如给定 (1,2)(1,2),那么 ai=2,aj=1a_i=2,a_j=1 是合法的。

输入格式

第一行两个正整数 n,cn, c,cc 表示 max⁡{a}\max\{a\}。

第二行 nn 个正整数表示序列 aa。

第三行一个正整数表示 mm。

接下来 mm 行每行两个正整数 u,vu,v 表示一个二元组。

输出格式

输出一行一个整数表示答案。注意对 109+710^9 + 7 取模。

Samples

5 3
1 2 3 2 3
3
1 2
1 3
2 3
5

数据范围与约定

对于 100%100\% 的数据,满足 n,c≤105,m≤2×105n,c\le 10^5,m\le 2\times 10^5。数据保证没有两个相同的二元组。

本题共 100100 个测试点。

对于测试点 1∼81\sim 8,满足 n,m≤100n,m\le 100。

对于测试点 9∼229\sim 22,满足 n≤5000n\le 5000。

对于测试点 23∼3923\sim 39,满足 c≤1000c\le 1000。

对于测试点 40∼5240\sim 52,满足 aa 是一个排列。