1020: 面向对象程序设计

Memory Limit:128 MB Time Limit:1.000 S
Judge Style:Text Compare Creator:
Submit:7 Solved:0

Description

在面向对象程序设计中,常常会运用到函数的扩展与重写。当一个类继承某个类的时候,它可以调用所有父类可以调用的函数。它可以声明新的函数。当新的函数签名与父类的某个函数一致时,就会发生函数的覆盖(重写)。所以,在子类的实例调用某个函数时,它会调用最近的父类(有可能是它自己)的那个函数实现。

这里我们不考虑访问权限等情况,我们只关心某个类在调用某个函数时,这个函数是在哪个类中实现的。
具体题意请参考样例及其解释。

Input

输入文件名为 design.in

输入具有如下格式

n

p2 p3 … pn

t1 a11 a12 … a1t1

t2 a21 a22 … a2t2


tn an1 an2 … antn

q

u1 r1

u2 r2


uq rq

       n表示有n个类,这些类从1到n编号

       pi表示第i个类的父类编号。1 ≤ pi i−1。第1个类是所有类共同的祖先类,这个类没有父类

       ti表示在第 i 个类中定义了多少个函数,ai1,ai2,…,aiti 表示第 i 个类中的函数列表。同一个类的函数列表中不会出现两个相同的函数

       q 表示询问个数

       ui,ri 表示第 i 个询问,询问第 ui 个类的实例在调用 ri 函数时,调用的是哪个类中的版本

Output

输出文件名为 design.out

输出共 q 行,每行输出一个数,表示第i个询问的答案,若不存在,输出-1

Sample Input Copy

5
1 2 3 3
2 2 1
0
2 5 2
2 4 5
1 5
4
3 4
5 2
4 5
1 3

Sample Output Copy

-1
3
4
-1

HINT

【样例解释】

    



       一共有5个类,这5个类构成一颗树,其中1为其根节点。

       第2个类的父亲为1号类,第3个类的父亲为2号类,第4/5个类的父亲为3号类。

       1号类中有1,2号函数,3号类中有2,5号函数……

       第一组询问(3,4)表示询问第3号类里面的4号函数是从哪个类派生来的。从3号类开始向上找,发现并没有4号函数出现,因此输出-1

       第二组询问(5,2)表示询问第5号类里面2号函数是从哪个类派生来的,从5号类开始往上找,发现最近的2号出现在3号类中,因此输出3

       其它询问略



【数据范围】

对于60%的数据:

2 ≤ n ≤ 103,1 ≤ aij ≤ 103,0 ≤ ti ≤ 103, ∑ ti ≤ 103,1 ≤ q ≤ 103,1 ≤ ui ≤ n , 1 ≤ ri ≤ 103



对于100%的数据:

2 ≤ n ≤ 105,1 ≤ aij ≤ 106,0 ≤ ti ≤ 106, ∑ ti ≤ 106,1 ≤ q ≤ 105,1 ≤ ui ≤ n , 1 ≤ ri ≤ 106