Codeforces Round 432 (Div. 1, based on IndiaHacks Final Round 2017)
D
Tournament Construction
Codeforces
2800
原题
← CE →
翻译中…

Ivan is reading a book about tournaments. He knows that a tournament is an oriented graph with exactly one oriented edge between each pair of vertices. The score of a vertex is the number of edges going outside this vertex.

翻译中…

Yesterday Ivan learned Landau's criterion: there is tournament with scores $*d*_{1} ≤ *d*_{2} ≤ ... ≤ *d*_{*n*}$ if and only if image for all $1 ≤ *k* < *n*$ and image.

翻译中…

Now, Ivan wanna solve following problem: given a set of numbers $*S* = {*a*_{1}, *a*_{2}, ..., *a*_{*m*}}$, is there a tournament with given set of scores? I.e. is there tournament with sequence of scores $*d*_{1}, *d*_{2}, ..., *d*_{*n*}$ such that if we remove duplicates in scores, we obtain the required set ${*a*_{1}, *a*_{2}, ..., *a*_{*m*}}$?

翻译中…

Find a tournament with minimum possible number of vertices.

翻译中…

Input

翻译中…

The first line contains a single integer $*m*$ ($1 ≤ *m* ≤ 31$).

翻译中…

The next line contains $*m*$ distinct integers $*a*_{1}, *a*_{2}, ..., *a*_{*m*}$ ($0 ≤ *a*_{*i*} ≤ 30$) — elements of the set $*S*$. It is guaranteed that all elements of the set are distinct.

翻译中…

Output

翻译中…

If there are no such tournaments, print string "=(" (without quotes).

翻译中…

Otherwise, print an integer $*n*$ — the number of vertices in the tournament.

翻译中…

Then print $*n*$ lines with $*n*$ characters — matrix of the tournament. The $*j*$-th element in the $*i*$-th row should be $1$ if the edge between the $*i*$-th and the $*j*$-th vertices is oriented towards the $*j*$-th vertex, and $0$ otherwise. The main diagonal should contain only zeros.

翻译中…

样例

Input #1
2
1 2
Output #1
4
0011
1001
0100
0010
InputCopy OutputCopy
Input #2
2
0 3
Output #2
6
000111
100011
110001
011001
001101
000000
InputCopy OutputCopy
题目信息
题号
850D
时间限制
2 s
内存限制
512 MB
标签
构造
动态规划
图论
贪心
数学

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