#Lutece3387. 炼金术士

炼金术士

Description

为了炼制贤者之石,耶芙娜正在精心布置她的炼金阵,炼金阵由 nn 个点的无向完全图组成,即任意两个不同的点之间连有一条无向边。每一条边可以选择进行黑化,或者白化,或者不进行任何处理。

炼金阵对于黑化边与白化边构成的子图有一定的要求:

  • 在黑化边和白化边各自构成的子图中,都不能出现三元环。即不存在三个点之间两两连边全部黑化或全部白化;
  • 黑化边构成的子图中需要存在一条边数为 kk 的无环链作为基底,这条链经过的 k+1k+1 个点 a0,a1,...,aka_0,a_1,...,a_k 将会在输入中给出,对于任意 i[0,k1]i \in [0,k-1] ,炼金阵中 aia_iai+1a_{i+1} 两个点的连边必须进行黑化。

在满足以上两个要求的同时,为了提高炼制的成功率,耶芙娜希望黑化边与白化边的数量之和尽可能大。作为耶芙娜的老板(兼宠物猫),你决定帮助她规划出一种黑化白化边数量之和最大的炼金阵图。

Input

第一行一个整数 TT1T1001 \leq T \leq 100),表示测试数据组数。

对于每组数据,第一行输入两个整数 n,kn, k (2n502 \leq n \leq 50, 1kn11 \leq k \leq n-1),表示炼金阵点数与基底链的长度。第二行输入 k+1k+1 个互不相同的整数 a0,a1,,aka_0,a_1,\ldots ,a_k (1ain1 \leq a_i \leq n) ,表示黑化基底链经过的点的编号。

Output

对于每组数据,你需要输出 nn 行。第一行输出黑化边与白化边数量之和的最大值。接下来 n1n-1 行每行输出一个由 +, -, 0 三种字符构成的字符串,分别表示黑化、白化和不做处理,第 ii 行长度为 ii,第 ii 行第 jj 个字符表示第 i+1i+1 个点与第 jj 个点连边的处理类型。

答案可能不唯一,你可以输出任意最优解,但需要保证输出中基底链上的边均为 +,且 +- 字符数量之和等于第一行输出的最大值。

Samples

3
4 2
1 2 3
5 4
1 3 5 2 4
6 5
1 2 3 4 5 6
6
+
-+
--+
10
-
+-
++-
-++-
14
+
-+
--+
+--+
0+--+

Resources

The 23rd UESTC Programming Contest Preliminary