你有一个会计,她负责记录你所有的开支。每天你都会把开支笔记发给她,而她会将这些笔记追加到一个巨大的汇总文件中。你的每份笔记都由若干行组成,例如:
bed = 100 table = 150 furniture = bed + table furniture = furniture + 10
这(可能)意味着你在家具上花了 250,在交通上(可能)花了 10。更一般地,你笔记中的每一行都是以下格式之一:
name = numbername = item + item
其中 item 可以是 number 或 name,number 是一个不超过 $10^9$ 的自然数(不含前导零),name 是由大小写字母组成的任意字符序列。
在将你的笔记转录到汇总文件时,会计既没有改变某份笔记中各行的顺序,也没有打乱不同笔记的行。但是,她有时会修改变量名……不过她做得很一致,会将单份笔记中所有出现的某个名字替换为同一个新名字。此外,同一份笔记中的不同名字在汇总文件中也会被重写为不同的名字。但是,这并不保证与其他笔记保持一致——例如,一份笔记中的名字 beer 可能会被重写为 drink,另一份笔记中的名字 tee 也可能会被重写为 drink,而下一份笔记中的 beer 可能会被重写为 food。我们称她在汇总文件中记录的你的笔记版本为该笔记的一个转录(transcription)。
现在的问题是,你的会计刚刚辞职了(而且事实证明,她卷走了你大部分的积蓄),只给你留下了汇总文件和一大堆未分类的原始笔记。你想检查是否有些笔记没有被记录在汇总文件中,因此对于每份笔记,你需要在汇总文件中寻找一段可能是其转录的连续行。
输入格式
输入包含多个测试用例。输入的第一行包含一个正整数 $Z \le 15$,表示测试用例的数量。接下来是 $Z$ 个测试用例,每个测试用例的格式如下。
每个测试用例的第一行包含一个整数 $k$,表示笔记的数量($1 \le k \le 50000$)。
接下来的行首先包含 $k$ 份笔记的描述,然后是汇总文件的描述。
每份笔记和汇总文件的描述都始于一行,该行包含一个整数 $d$($1 \le d$),表示该部分的行数。
接下来是 $d$ 行,每行包含笔记或汇总文件中的一行。每行的格式如上文所述。你可以认为名字、数字、符号 "=" 和 "+" 之间用单个空格分隔,且每行长度最多为 100 个字符。汇总文件的行数与所有笔记的行数之和均不超过 $3 \times 10^6$。
输出格式
对于每个测试用例,输出应包含 $k$ 行。第 $i$ 行应为第 $i$ 份笔记的答案。
该答案应为汇总文件中该笔记可能转录起始的第一行的行号(汇总文件的第一行编号为 1)。如果汇总文件中没有任何片段可以作为该笔记的可能转录,则输出单词 NONE。
样例
输入样例 1
2 3 4 bed = 100 table = 150 furniture = bed + table furniture = furniture + 10 1 beer = 100 2 a = a + a a = a + 10 10 furniture = 100 table = 150 furniture = furniture + table furniture = furniture + 10 sofa = 100 stol = 150 meble = sofa + stol meble = meble + 10 picie = 100 drink = 0100 2 1 a = 100 + 200 1 a = 100 2 x = 100 + 200 y = 100
输出样例 1
5 1 NONE 1 2