8006 - 制作菜品

厨师准备给小朋友们制作 m 道菜,每道菜均使用 k 克原材料。为此,厨师购入了 n 种原材料,原材料从 1n 编号,第 i 种原材料的质量为 d_i 克。n 种原材料的质量之和恰好为 m×k 克,其中 d_ik 都是正整数。

制作菜品时,一种原材料可以被用于多道菜,但为了让菜品的味道更纯粹,厨师打算每道菜至多使用 2 种原材料。现在请你判断是否存在一种满足要求的制作方案。更具体地,方案应满足下列要求:

共做出 m 道菜。 每道菜至多使用 2 种原材料。 每道菜恰好使用 k 克原材料。 每道菜使用的每种原材料的质量都为正整数克。n 种原材料都被恰好用完。 若存在满足要求的制作方案,你还应该给出一种具体的制作方案。

输入

本题单个测试点包含多组测试数据。

第一行一个整数 T 表示数据组数。对于每组数据:

第一行三个正整数 n,m,k 分别表示原材料种数、需要制作的菜品道数、每道菜品需使用的原材料的质量。
第二行 n 个整数,第 i 个整数表示第 i 种原材料的质量 d_i

1≤T≤10,1≤n≤500,n−2≤m≤5000,m≥1,1≤k≤5000,\varSigma d_i =m×k。

输出

对于每组测试数据:

若不存在满足要求的制作方案,则输出一行一个整数 −1;
否则你需要输出 m 行,每行表示一道菜品的制作方案,根据使用的原材料种数,格式为下列两种之一:
依次输出一行两个整数 i 和 x,表示该道菜使用 x 克第 i 种原材料制作。你应保证 1≤i≤n,x=k。 依次输出一行四个整数 i、x、j 和 y,表示该道菜使用 x 克第 i 种原材料与 y 克第 j 种原材料制作。你应保证1≤i,j≤n,x+y \not =k , x>0 ,y>0
本题使用自定义校验器检验你的答案是否正确,因此若有多种满足条件的方案,你只需要输出任意一种

(对于每个不正确的提交,建议查看检查日志 )

样例

输入

4
1 1 10
10
4 3 100
80 30 90 100
5 3 1000
200 400 500 900 1000
6 4 100
25 30 50 80 95 120

输出

1 10
1 80 2 20
2 10 3 90
4 100
-1
1 5 5 95
1 20 4 80
2 30 6 70
3 50 6 50

输入

1
10 8 5000
5342 2288 3662 4105 4769 3942 5355 3406 4746 2385

输出

-1

提示

样例 1 解释 对于第二组数据
4 3 100
80 30 90 100
一种满足要求的制作方案为:

使用 80 克原材料 1 与 20 克原材料 2 做第一道菜。
使用 10 克原材料 2 与 90 克原材料 3 做第二道菜。
使用 100 克原材料 4 做第三道菜。

本题测试数据为模拟数据 应当使用bitset优化动态规划

来源

NOI国赛

时间限制 2 秒
内存限制 512 MB
讨论 统计
上一题 下一题