编程题
### 问题描述
作为一名软件工程师,你需要维护一个大型字符串管理系统。该系统需要处理 $ N $ 个操作,每个操作要么是将两个不超过 $100$ 字符的字符串 $ A $ 和 $ B $ 合并,要么是找出一个字符串 $ A $ 在系统中的所有共享前缀的字符串。每个合并操作都会将字符串 $ A $ 和 $ B $ 合并后的结果存储在系统中。你的任务是确保这两种操作能够高效地完成,并输出查询操作的结果。
### 输入格式:
第一行包含一个整数 $ N $ ,表示操作的数量。
接下来的 $ N $ 行,每行描述一个操作。如果操作是合并,则该行包含三个字符串,分别是 " $merge$ ",字符串 $ A $ 和字符串 $ B $ 。如果操作是查询,则该行包含两个字符串,分别是 " $query$ " 和字符串 $ A $ 。
### 输出格式
对于每个 " $query$ " 操作,输出所有具有相同前缀的字符串,字符串之间用一个空格隔开,且字符串应按照字典序从小到大排列。如果没有字符串具有相同的前缀,则输出 " $NO PREFIX$ "。
### 样例输入
```
5
merge abc def
query abc
merge xyz abc
query ab
query xyza
```
### 样例输出
```
abcdef
abcdef
xyzabc
```
### 评测数据范围
$1<= N <= 1000$。