Log set

时间限制:30s      空间限制:256MB

题目描述

定义一个子集的和为该子集中所有数的和,特别的,定义空集的和为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。


题目来源

没有写明来源