题目描述
《笨拙之极的上野》中,科学部部长上野每天都搞出千奇百怪的发明,并让她的部员田中来测试。
这天,她又发明了一样东西,不过,这次是发明了一种语言——“Ueno语言”。
“Ueno语言”是一种处理数学上的映射关系的语言。它的语法如下:
addA(x):往集合A中添加x,如果集合A中已经有该元素,则忽略该命令。
addB(y):往集合B中添加y,如果集合B中已经有该元素,则忽略该命令。
buildmap(x,y):建立集合A中的元素x到集合B中的元素y的映射。如果集合A中不存在x,但是集合B中存在y,则输出"Invalid!Can't find x."(输出不包括双引号,下同)。如果集合B中不存在y,但是集合A中存在x,则输出"Invalid!Can't find y."。如果集合A中不存在x,且集合B中不存在y,输出“Invalid!Can't find both x and y.”。特别地,如果x元素之前已经建立了映射,则输出"Invalid!There is already a map from "+x元素+".",而无需考虑y是否存在的问题。
findy(x):输出x映射到集合B的像。如果没有此映射,输出"Invalid!No such map."。
findx(y):升序输出映射到y的原像。每个元素后面有一个空格。如果没有此映射,输出"Invalid!No such map."。
这种语言是怎么实现的呢?问题的答案就交给你了。
输入描述
第一行,输入正整数 $m$ ,表示有 $m$ 条语句。 $1 \leq m \leq 10^{5}$
接下来 $m$ 行,每行输入一句语句。输入的语句保证符合“Ueno语言”的语法。
这些语句处理的数只可能是整数且绝对值不超过 $10^{9}$ (即上文中的 $-10^{9} \leq x,y \leq 10^{9}$ 且 $x,y \in Z$ )。
输出描述
根据对应的语句输出。值得注意的是,每次输出后面都要有一个换行符。
样例输入
12 addA(2) addA(5) addB(3) addB(4) buildmap(2,3) buildmap(2,5) findy(2) addA(6) buildmap(6,3) addA(6) buildmap(5,3) findx(3)
样例输出
Invalid!There is already a map from 2. 3 2 5 6
提示
如图所示为执行了全部样例输入以后形成的映射图:
来源
Enal WIT第二届程序设计竞赛(现场赛)