Processing math: 100%

時間制限 : sec, メモリ制限 : KB
English / Japanese  

Enumeration of Subsets III

0からn1までのn個の整数を要素とする集合Uの部分集合Tが与えられます。Tの全ての部分集合を列挙してください。ただし、0からn1をそれぞれ2進数の00...0001、00...0010、00...0100、...、10...0000とし、存在する要素のビットごとの論理和を取ったものをその部分集合の整数値とします。

Input

入力は以下の形式で与えられます。

n
kb0b1...bk1

kT の要素数で、biTに含まれる要素を示します。

Output

部分集合をそれらの整数値の昇順で出力してください。1つの部分集合は以下の形式で出力してください。

d: e0 e1 ...

整数値dの後にコロン:、続けて部分集合に含まれる要素eiを昇順で空白付きで出力してください。

Constraints

  • 1n28
  • 0k18
  • kn
  • 0bi<n

Sample Input 1

4
2 0 2

Sample Output 1

0:
1: 0
4: 2
5: 0 2

 
BESsBESsBESsBESsBESsBESsBESsBESs