Codeforces Round 207 (Div. 1)
D
Bags and Coins
Codeforces
2700
原题
← CE →
翻译中…

When you were a child you must have been told a puzzle of bags and coins. Anyway, here's one of its versions:

翻译中…

A horse has three bags. The first bag has one coin, the second bag has one coin and the third bag has three coins. In total, the horse has three coins in the bags. How is that possible?

翻译中…

The answer is quite simple. The third bag contains a coin and two other bags.

翻译中…

This problem is a generalization of the childhood puzzle. You have $*n*$ bags. You know that the first bag contains $*a*_{1}$ coins, the second bag contains $*a*_{2}$ coins, ..., the $*n*$-th bag contains $*a*_{*n*}$ coins. In total, there are $*s*$ coins. Find the way to arrange the bags and coins so that they match the described scenario or else state that it is impossible to do.

翻译中…

Input

翻译中…

The first line contains two integers $*n*$ and $*s*$ $(1 ≤ *n*, *s* ≤ 70000)$ — the number of bags and the total number of coins. The next line contains $*n*$ integers $*a*_{1}, *a*_{2}, ..., *a*_{*n*}$ $(1 ≤ *a*_{*i*} ≤ 70000)$, where $*a*_{*i*}$ shows the number of coins in the $*i*$-th bag.

翻译中…

Output

翻译中…

If the answer doesn't exist, print -1.

翻译中…

Otherwise, print $*n*$ lines, on the $*i*$-th line print the contents of the $*i*$-th bag. The first number in the line, $*c*_{*i*}$ $(0 ≤ *c*_{*i*} ≤ *a*_{*i*})$, must represent the number of coins lying directly in the $*i*$-th bag (the coins in the bags that are in the $*i*$-th bag are not taken into consideration). The second number in the line, $*k*_{*i*}$ $(0 ≤ *k*_{*i*} < *n*)$ must represent the number of bags that lie directly in the $*i*$-th bag (the bags that are inside the bags lying in the $*i*$-th bag are not taken into consideration). Next, the line must contain $*k*_{*i*}$ integers — the numbers of the bags that are lying directly in the $*i*$-th bag.

翻译中…

The total number of coins in the solution must equal $*s*$. If we count the total number of coins the $*i*$-th bag in the solution has, we should get $*a*_{*i*}$.

翻译中…

No bag can directly lie in more than one bag. The bags can be nested in more than one level (see the second test case). If there are multiple correct answers, you can print any of them.

翻译中…

Note

翻译中…

The pictures below show two possible ways to solve one test case from the statement. The left picture corresponds to the first test case, the right picture corresponds to the second one.

翻译中…

image

翻译中…

样例

Input #1
3 3
1 3 1
Output #1
1 0
1 2 3 1
1 0
InputCopy OutputCopy
Input #2
3 3
1 3 1
Output #2
1 0
2 1 3
0 1 1
InputCopy OutputCopy
Input #3
1 2
1
Output #3
-1
InputCopy OutputCopy
Input #4
8 10
2 7 3 4 1 3 1 2
Output #4
2 0
1 2 1 4
0 2 7 8
0 2 5 6
1 0
3 0
1 0
2 0
InputCopy OutputCopy
题目信息
题号
356D
时间限制
2.5 s
内存限制
256 MB
标签
位运算
构造
动态规划
贪心

题面与样例版权归 Codeforces 及出题人所有;中文翻译由 AI 生成(CI 管线),如有出入请以原文为准。