# 2019 ACM NEERC, Semifinal

# Foolpruf Security

Alice and Bob obtained a map of the secret underground facility. The facility consists of **n** security units and **m** chemical labs, connected by bidirectional tunnels. The map of this facility forms a tree: there are exactly **n** + **m** - **1** tunnels, and there are no cycles. Vertices corresponding to security units have numbers from **1** to **n**, chemical labs have numbers from **n** + **1** to **n** + **m**. Each tunnel connects a security unit to a chemical lab; there are no tunnels between two security units or two chemical labs.

In case Alice or Bob gets captured, they decided to split the map into two pieces. To do that, they calculated the Prufer code of the tree. Alice then saved some of the numbers between **1** and **n** to her data storage in the same order as they go in the original code, and Bob saved some of the numbers from **n** + **1** to **n** + **m** to his storage in the same way.

A Prufer code of a tree on **k** vertices is a sequence of **k** - **2** integers from **1** to **k**, constructed as follows. Find the leaf (a vertex with degree one) with the smallest label, remove it from the tree, then print the label of its only neighbor. Repeat this **k** - **3** more times, until only one edge remains. The printed sequence of **k** - **2** vertex labels is the Prufer code.

Alice and Bob safely returned and they are ready to combine their data to restore the original map. They could make a mistake during the backup, meaning no such map exists. Alice and Bob need your help to restore any possible map of the facility consistent with the collected data, so that both Alice’s and Bob’s parts are subsequences of the Prufer code of the map.

#### Input

The first line contains four integers **n**, **m**, `k`

and _{a}`k`

(_{b}**2** ≤ **n**, **m** ≤ `10`

, ^{5}**1** ≤ `k`

, _{a}`k`

, _{b}`k`

+ _{a}`k`

≤ _{b}**n** + **m** - **2**). The second line contains `k`

integers _{a}`a`

, _{1}`a`

, ..., _{2}`a`

(1 ≤ _{ka}`a`

≤ _{i}**n**) - Alice’s part of the map. The third line contains `k`

integers _{b}`b`

, _{1}`b`

, ..., _{2}`b`

(_{kb}**n** + **1** ≤ `b`

≤ _{i}**n** + **m**) - Bob’s part of the map.

#### Output

If there’s no such map, print **"No"**.

Otherwise, print **"Yes"** on the first line, followed by **n** + **m** - **1** lines describing the possible facility map.

Each line should contain two integers `u`

and _{i}`v`

- the security unit and the chemical lab connected by the _{i}**i**-th tunnel of the facility.

#### Note

The Prufer code of the tree in the first example is (**7**, **1**, **6**, **3**, **3**, **8**, **4**).

4 5 4 2 1 3 3 4 7 8

Yes 1 8 2 7 3 7 4 9 5 1 6 3 7 4 8 3

4 3 3 1 3 2 2 6

No