Shiritori(しりとり) - joi2011-day2

出典: 第10回日本情報オリンピック 日本代表選手選考会

時間制限: 5秒

メモリ制限: 64MB

JOI 国では,100 種類の文字が使われている.これらの文字は,コンピュータ上では直接表すことが難しいので,代わりに以下の表記が用いられる.

00 01 02 03 04 05 06 07 08 09
10 11 12 13 14 15 16 17 18 19
20 21 22 23 24 25 26 27 28 29
30 31 32 33 34 35 36 37 38 39
40 41 42 43 44 45 46 47 48 49
50 51 52 53 54 55 56 57 58 59
60 61 62 63 64 65 66 67 68 69
70 71 72 73 74 75 76 77 78 79
80 81 82 83 84 85 86 87 88 89
90 91 92 93 94 95 96 97 98 99

すなわち,数字 2 つによる 10 \times 10 通りで表される.JOI 国の辞書では,この表によって定まる文字の順番によって単語を並べている.表の上の行にある文字がより早く,同じ行の文字ではより左の文字が早い.

さて,JOI 国では今,しりとりが一大ブームである.しりとりとは,参加者が順番に,前の人が言った単語の最後の文字から始まる単語を言っていくゲームである.一度言われた単語を使うことはできない.

ある日,あなたは友達と「5 しりとり」で遊んでいた.「5 しりとり」では,通常のしりとりのルールに加え,用いる単語はすべて 5 文字でなければならない.あなたは「5 しりとり」で言われた N 個の単語のリストをコンピュータに記録していたのだが,誤って並べ替えてしまった.そこで,単語のリストから「5 しりとり」の様子を復元したい.

課題

単語のリストが与えられたとき,「5 しりとり」の様子を復元するプログラムを作成せよ.

制限

1 \leq N \leq 500\,000 単語の個数

入力

標準入力から以下の入力を読み込め.

出力

与えられた N 個の単語を用いた「5 しりとり」が不可能である場合,impossible と 1 行に出力せよ.

5 しりとり」が可能である場合,用いられる N 個の単語を 11 つずつ出力せよ.可能な「5 しりとり」が複数考えられるときは,以下の条件を満たすものを選べ.

採点基準

入出力の例

入力例 1 出力例 1
5
0000010201
0102030403
0104050603
0206070801
0308090002
0000010201
0102030403
0308090002
0206070801
0104050603

この例では,以下の 2 通りの「5 しりとり」が考えられる.

1 番目の単語は同じであり,2 番目の単語が辞書に掲載されている順番を比較して,前者を出力する.

入力例 2 出力例 2
4
9600000098
9700000099
9800000099
9900000098
impossible

この例では,可能な「5 しりとり」は存在しない.

入力例 3 出力例 3
12
0114090401
0214051905
0304141219
0510031717
0703050011
1102190101
1108040907
1110090702
1313071203
1707120711
1902090011
1909121313
1909121313
1313071203
0304141219
1902090011
1108040907
0703050011
1110090702
0214051905
0510031717
1707120711
1102190101
0114090401