Algoland and Berland
Contest: 2018-2019 ICPC, NEERC, Southern Subregional Contest (Online Mirror, ACM-ICPC Rules, Teams Preferred)
Difficulty rating: 3000
Tags: constructive algorithms, divide and conquer, geometry

Once upon a time Algoland and Berland were a single country, but those times are long gone. Now they are two different countries, but their cities are scattered on a common territory.

All cities are represented as points on the Cartesian plane. Algoland consists of $$$a$$$ cities numbered from $$$1$$$ to $$$a$$$. The coordinates of the $$$i$$$-th Algoland city are a pair of integer numbers $$$(xa_i, ya_i)$$$. Similarly, Berland consists of $$$b$$$ cities numbered from $$$1$$$ to $$$b$$$. The coordinates of the $$$j$$$-th Berland city are a pair of integer numbers $$$(xb_j, yb_j)$$$. No three of the $$$a+b$$$ mentioned cities lie on a single straight line.

As the first step to unite the countries, Berland decided to build several bidirectional freeways. Each freeway is going to be a line segment that starts in a Berland city and ends in an Algoland city. Freeways can't intersect with each other at any point except freeway's start or end. Moreover, the freeways have to connect all $$$a+b$$$ cities. Here, connectivity means that one can get from any of the specified $$$a+b$$$ cities to any other of the $$$a+b$$$ cities using freeways. Note that all freeways are bidirectional, which means that one can drive on each of them in both directions.

Mayor of each of the $$$b$$$ Berland cities allocated a budget to build the freeways that start from this city. Thus, you are given the numbers $$$r_1, r_2, \dots, r_b$$$, where $$$r_j$$$ is the number of freeways that are going to start in the $$$j$$$-th Berland city. The total allocated budget is very tight and only covers building the minimal necessary set of freeways. In other words, $$$r_1+r_2+\dots+r_b=a+b-1$$$.

Help Berland to build the freeways so that:

- each freeway is a line segment connecting a Berland city and an Algoland city,
- no freeways intersect with each other except for the freeway's start or end,
- freeways connect all $$$a+b$$$ cities (all freeways are bidirectional),
- there are $$$r_j$$$ freeways that start from the $$$j$$$-th Berland city.

Input format:
Input contains one or several test cases. The first input line contains a single integer number $$$t$$$ ($$$1 \le t \le 3000$$$) — number of test cases. Then, $$$t$$$ test cases follow. Solve test cases separately, test cases are completely independent and do not affect each other.

Each test case starts with a line containing space-separated integers $$$a$$$ and $$$b$$$ ($$$1 \le a, b \le 3000$$$) — numbers of Algoland cities and number of Berland cities correspondingly.

The next line contains $$$b$$$ space-separated integers $$$r_1, r_2, \dots, r_b$$$ ($$$1 \le r_b \le a$$$) where $$$r_j$$$ is the number of freeways, that should start in the $$$j$$$-th Berland city. It is guaranteed that $$$r_1+r_2+\dots+r_b=a+b-1$$$.

The next $$$a$$$ lines contain coordinates of the Algoland cities — pairs of space-separated integers $$$xa_i, ya_i$$$ ($$$-10000 \le xa_i, ya_i \le 10000$$$). The next $$$b$$$ lines contain coordinates of the Berland cities — pairs of space-separated integers $$$xb_i, yb_i$$$ ($$$-10000 \le xb_i, yb_i \le 10000$$$). All cities are located at distinct points, no three of the $$$a+b$$$ cities lie on a single straight line.

Sum of values $$$a$$$ across all test cases doesn't exceed $$$3000$$$. Sum of values $$$b$$$ across all test cases doesn't exceed $$$3000$$$.

Output format:
For each of the $$$t$$$ test cases, first print "YES" if there is an answer or "NO" otherwise.

If there is an answer, print the freeway building plan in the next $$$a+b-1$$$ lines. Each line of the plan should contain two space-separated integers $$$j$$$ and $$$i$$$ which means that a freeway from the $$$j$$$-th Berland city to the $$$i$$$-th Algoland city should be built. If there are multiple solutions, print any.

Constraints:
Time limit: 5.0 s
Memory limit: 512.0 MB

Example input:
2
2 3
1 1 2
0 0
1 1
1 2
3 2
4 0
1 1
1
0 0
0 1

Example output:
YES
2 2
1 2
3 2
3 1
YES
1 1

Editorial: