编程题
### 问题描述
小明被挑选去参加一个 ACM 比赛。他的任务是解决一个很特别的问题:给定一个整数数组,但是只能通过交换任意两个数的方式来排序。听起来很简单对吧?但是这个问题的难点在于,只有某些数字是可以交换的。例如,数字 $7$ 和数字 $3$ 可以交换,但是数字 $5$ 可能不能和任何数字交换。
你的任务是,给定一个整数数组和一个允许交换的数字对列表,找到可能的最大排序数组。
例如,如果我们有一个数组 $[2, 3, 5, 7]$ 和一个交换列表 ${(3, 7), (5, 2)}$,我们可以先交换 $3$ 和 $7$ 得到 $[2, 7, 5, 3]$,再交换 $5$ 和 $2$ 得到 $[5, 7, 2, 3]$,最终得到可能的排序最大的数组。
### 输入格式
第一行包含一个整数 $n$,$(1 \leq n \leq 500)$,表示数组中整数的个数。
第二行包含 $n$ 个整数 $a_i$,$(1 \leq a_i \leq 10^9)$,表示整数数组。
第三行包含一个整数 $m$,$(0 \leq m \leq 10^3)$,表示交换列表的对数。
接下来的 $m$ 行,每行包含两个整数 $b_i$,$c_i$,$(1 \leq b_i, c_i \leq 10^9)$,表示可以交换的整数对,题目保证每对整数都存在于数组中。
### 输出格式
输出一行,包含 $n$ 个整数,表示最大排序数组。
### 样例输入
```
4
2 3 5 7
2
3 7
5 2
```
### 样例输出
```
5 7 2 3
```
### 测评数据规模
$1 \leq n \leq 500$,$1 \leq a_i, b_i, c_i \leq 10^9$,$0 \leq m \leq 10^3$。