CF1851G Vlad and the Mountains

Description

Vlad decided to go on a trip to the mountains. He plans to move between $ n $ mountains, some of which are connected by roads. The $ i $ -th mountain has a height of $ h_i $ . If there is a road between mountains $ i $ and $ j $ , Vlad can move from mountain $ i $ to mountain $ j $ by spending $ h_j - h_i $ units of energy. If his energy drops below zero during the transition, he will not be able to move from mountain $ i $ to mountain $ j $ . Note that $ h_j - h_i $ can be negative and then the energy will be restored. Vlad wants to consider different route options, so he asks you to answer the following queries: is it possible to construct some route starting at mountain $ a $ and ending at mountain $ b $ , given that he initially has $ e $ units of energy?

Input Format

The first line of the input contains an integer $ t $ ( $ 1 \le t \le 10^4 $ ) — the number of test cases. The descriptions of the test cases follow. The first line of each test case contains two numbers $ n $ and $ m $ ( $ 2 \le n \le 2 \cdot 10^5 $ , $ 1 \le m \le \min(\frac{n\cdot(n - 1)}{2}, 2 \cdot 10^5) $ ) — the number of mountains and the number of roads between them, respectively. The second line contains $ n $ integers $ h_1, h_2, h_3, \dots, h_n $ ( $ 1 \le h_i \le 10^9 $ ) — the heights of the mountains. The next $ m $ lines contain two integers $ u $ and $ v $ ( $ 1 \le u, v \le n $ , $ u \ne v $ ) — the numbers of the mountains connected by a road. It is guaranteed that no road appears twice. The next line contains an integer $ q $ ( $ 1 \le q \le 2 \cdot 10^5 $ ) — the number of queries. The following $ q $ lines contain three numbers $ a $ , $ b $ , and $ e $ ( $ 1 \le a, b \le n $ , $ 0 \le e \le 10^9 $ ) — the initial and final mountains of the route, and the amount of energy, respectively. It is guaranteed that the sum of $ n $ over all test cases does not exceed $ 2 \cdot 10^5 $ . The same guarantee applies to $ m $ and $ q $ .

Output Format

For each query, output "YES" if Vlad can construct a route from mountain $ a $ to mountain $ b $ , and "NO" otherwise. You can output the answer in any case (for example, the strings "yEs", "yes", "Yes", and "YES" will be recognized as a positive answer). In the examples below, the answers for different test cases are separated by an empty line, which you do not need to output.