#5356. 红与蓝

内存限制:256 MiB 时间限制:10 Sec

题目描述

给定一棵树,初始时非叶节点均为无色,叶节点会是红色、蓝色或无色。小红和小蓝轮流给无色叶子染色(小红染
红色,小蓝染蓝色,小红先染)。所有叶子染完后,非叶节点的颜色将被逐一确定:一个非叶节点的颜色是它所有
儿子的颜色中出现较多的那个(保证有奇数个儿子)。最后,根是谁的颜色谁就获胜。求小红是否能赢,若能赢,
求出第一步选择哪些叶子能赢。

输入格式

第一行一个整数t表示数据组数。

每组数据第一行一个整数n表示节点数。
第二行n个整数,第i个整数fi表示i的父亲,保证f1=0。
第三行n个整数,第i个整数gi表示i的初始颜色(0表示红色,1表示蓝色,-1表示无色)。

输出格式

每组数据输出一行。
若小红能赢,先输出一个整数m表示第一步可以选的叶子数,接下来m个整数表示那些叶子的编号,从小到大输出。
若你只知道小红能赢,你可以只输出一行一个整数0。
否则输出一个整数-1。
t<=10,n≤100000。

样例

样例输入


			
2
2
0 1
-1 -1
2
0 1
-1 1

样例输出


			
1 2
-1

数据范围与提示