你在一家制造多种不同产品的工厂工作。产品需要在多台不同的机床上进行加工。这些机床所在的加工车间通过传送带连接,以交换半成品。每个半成品都需要通过一条或多条传送带从一个车间传输到另一个车间。
由于不同类型产品所需的加工顺序不同,目前的传送带是双向运行的。这可能会导致效率低下,因为在切换传送带方向之前,必须先将其完全清空。这里或许可以进行“改善”(Kaizen,即效率提升)!
增加更多的传送带成本太高。如果所有需要的传输任务都能通过当前安装的、固定方向的传送带完成,则无需额外成本。所有需要的传输任务(从哪个车间到哪个车间)都已经列出。你想知道是否可以将所有传送带设置为单向运行,从而满足所有传输需求;如果可以,请给出实现这一目标的传送带方向。
输入格式
第一行包含两个整数 $n$ ($2 \le n \le 10^4$) 和 $m$ ($1 \le m \le 10^5$),分别表示车间的数量和传送带的数量。车间编号为 $1$ 到 $n$。接下来的 $m$ 行,每行包含两个整数 $x_i$ 和 $y_i$ ($1 \le x_i < y_i \le n$),表示第 $i$ 条传送带连接车间 $x_i$ 和 $y_i$。任意两个车间之间最多安装一条传送带。保证任意两个车间都可以通过一条或多条传送带连通。下一行包含一个整数 $k$ ($1 \le k \le 10^5$),表示从一个车间到另一个车间的传输需求数量。接下来的 $k$ 行,每行包含两个整数 $a_i$ 和 $b_i$ ($1 \le a_i \le n, 1 \le b_i \le n, a_i \neq b_i$),表示需要从车间 $a_i$ 传输到车间 $b_i$。对于 $i \neq j$,满足 $a_i \neq a_j$ 或 $b_i \neq b_j$。
输出格式
如果无法在所有传送带单向运行的情况下满足所有传输需求,输出“No”。否则,第一行输出“Yes”,随后输出 $m$ 行,每行描述一条传送带的方向。所有传输需求都应能在这些传送带方向下实现。每条方向应描述为一对由空格分隔的车间编号,左侧为起点车间编号,右侧为终点车间编号。这 $m$ 行的顺序不重要,只要所有传送带都被指定且没有重复或遗漏即可。如果存在多种可行的方向分配方案,输出其中任意一种均可。
样例
样例输入 1
3 2 1 2 2 3 3 1 2 1 3 2 3
样例输出 1
Yes 1 2 2 3
样例输入 2
3 2 1 2 2 3 3 1 2 1 3 3 2
样例输出 2
No
样例输入 3
4 4 1 2 1 3 1 4 2 3 7 1 2 1 3 1 4 2 1 2 3 3 1 3 2
样例输出 3
Yes 1 2 2 3 3 1 1 4