#4217. Log set

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

题目描述

定义一个子集的和为该子集中所有数的和,特别的,定义空集的和为0。
已知一个非空多重整数集合S以及其每个子集的和,构造出原集合S,如果有多个可能的S,那么输出将S内所有元素排序后,字典序最小的一个。数据保证有解。 

输入格式

第一行有一个正整数T,表示数据组数。
每组数据第一行有一个正整数n,接下来2行,第一行n个整数Si,第二行n个整数Pi,每个数对(Si,Pi)表示和为Si的子集有Pi个。

输出格式

对每组数据输出一行Case #数据编号:,接着按升序输出S中的数,可参考样例输出。

样例

样例输入


			
3
8
0 1 2 3 4 5 6 7
1 1 1 1 1 1 1 1
4
0 1 3 4
4 4 4 4
5
-2 -1 0 1 2
1 2 2 2 1

样例输出


			
Case #1: 1 2 4
Case #2: 0 0 1 3
Case #3: -2 1 1

【样例解释】
对第三组数据,多重集-1 -1 2同样可能,但是-2 1 1的字典序更小,所以应输出-2 1 1。

数据范围与提示

对于100%的数据,S的大小不超过60,n<=10000,T<=100,|Si|<=10^10,Pi>=1。