Submissions will no longer be placed on the leaderboard. You may still attempt this problem for practice.

You are given a tree with nodes, that is, an acyclic connected graph, where each node is assigned a value .

You must answer queries in the form u v k. For each query, find and print the most frequent value on the path between and . If two values appear the same number of times, for tie-breaking, the smaller number is considered less frequent than, the bigger one.

Input Format

The first line contains two space-separated integers describing the respective values of and .
The second line contains space-separated integers describing the respective values of .
Each of the subsequent lines contains two space-separated integers, and , describing an edge between nodes and .
Each of the subsequent lines contains three space-separated integers, , and , describing a query.

Constraints

Subtasks

  • For of the total points,

Output Format

For each query, print a single line containing a single integer denoting the most frequent value on the path between and .

Sample Input 0

6 4
1 1 3 2 4 2
1 4
4 5
6 2
3 6
4 2
1 2 1
1 2 2
1 3 1
1 3 3

Sample Output 0

1
2
2
3

Explanation 0

image For the first and second queries, the numbers that appear on the path are: . The most frequent number is , and the second one is .

For the third and fourth queries, the path is composed by . Since both and appear twice on the path, and according to the problem statement, being smalled is considered less frequent than , the answer for the query 1 3 1 is , because is the most frequent number. The second most frequent number is (only because it is smaller than ), and the third one is , thus the answer for the last query is .

Loading Editor...
  1. Challenge Walkthrough
    Let's walk through this sample challenge and explore the features of the code editor.1 of 6
  2. Review the problem statement
    Each challenge has a problem statement that includes sample inputs and outputs. Some challenges include additional information to help you out.2 of 6
  3. Choose a language
    Select the language you wish to use to solve this challenge.3 of 6
  4. Enter your code
    Code your solution in our custom editor or code in your own environment and upload your solution as a file.4 of 6
  5. Test your code
    You can compile your code and test it for errors and accuracy before submitting.5 of 6
  6. Submit to see results
    When you're ready, submit your solution! Remember, you can go back and refine your code anytime.6 of 6
  1. Check your score