Kevin的水滴
题号:NC264539
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
Special Judge, 64bit IO Format: %lld

题目描述

\sf I'm\ making\ more,\ just\ a\ little\ bit

\sf Spend\ a\ little\ more\ to\ get\ rid\ of\ it

\sf Smile\ a\ little\ more\ and\ I'm\ into\ it

       —— Sunshine,\ \text{OneRepublic}

氧气少年n 个水滴排成一排,第 i 个水滴的饱和值为 a_i(1\leq a_i\leq 9)

每个水滴可以吸收其他水滴。例如:某一水滴目前的饱和值为 a,它吸收了一个饱和值为 b 的水滴,那么此水滴的饱和值变为 a+b

当某个水滴的饱和值增加到 10 的时候,这个水滴就会爆裂为两个饱和值为 1 的水滴(原水滴消失),分别向左和向右飞去,接下来:
  •  对于向左飞的水滴,他会飞到与原水滴左侧相邻的水滴处,被左侧相邻的水滴吸收(如果左侧有相邻的水滴),或飞到向左无穷远的位置。
  •  对于向右飞的水滴,他会飞到与原水滴右侧相邻的水滴处,被右侧相邻的水滴吸收(如果右侧有相邻的水滴),或飞到向右无穷远的位置。
请注意,对于空中两个相遇的、相向而行的水滴,它们只会“擦肩而过”,换句话说,它们不受相遇水滴的任何影响。

氧气少年想要合理的选择一个水滴,使得向此水滴添加一滴饱和值为 1 的水滴后,最终恰好有 x 个水滴飞到向左无穷远的位置,恰好有 y 个水滴飞到向右无穷远的位置。

请求出一个符合条件的 a 序列和氧气少年添加水滴的位置,或者报告无解。

输入描述:

第一行包含一个整数 T(1\leq T\leq 10^5),表示测试用例的组数。

对于每组测试用例:

仅输入一行,包含三个整数 n,x,y(1\leq n\leq 2\cdot 10^5,1\leq x,y\leq 10^9)

保证对于所有测试用例,n 的总和不超过 2\cdot 10^5

输出描述:

对于每组测试用例:

如果找不到符合条件的 a 序列和氧气少年添加水滴的位置,那么输出 -1
否则:
  •  第一行输出一个整数 p(1\leq p\leq n),表示氧气少年添加水滴的位置;
  •  第二行输出 n 个整数,第 i 个整数 a_i(1\leq a_i\leq 9) 表示第 i 个水滴的饱和值。

如果有多个可行的答案,请输出任意一个。
示例1

输入

复制
2
3 2 2
4 6 7

输出

复制
2
9 9 9
-1