Foolpruf Security
题号:NC233872
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
Special Judge, 64bit IO Format: %lld

题目描述

给你个点,组成一棵树,并且左半边n个点,右半边m个点组成一张二分图。

定义 一棵树的Prufer code:取出当前下标最小的叶子结点,将其删除,并且输出和它相邻的点的下标,直到最后只剩下两个点。

告诉你两个子序列a,b。他们都是这棵树的 Prufer code的一个子序列,并且a中元素是1~nb中元素为~

问你是否能构造这样一棵树,并且将这棵树输出。

输入描述:

第一行四个整数

第二行k_a个整数

第三行k_b个整数

输出描述:

如果无法构造,输出"No"。否则输出"Yes",接下来输出行,每行两个整数,表示树的边。
示例1

输入

复制
4 5 4 2
1 3 3 4
7 8

输出

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

说明


示例2

输入

复制
4 3 3 1
3 2 2
6

输出

复制
No

备注:

原题链接:https://codeforces.com/contest/1267/problem/F