1 から N までの番号が付けられた N 個の頂点を含む単純な無向グラフがあり、各頂点には {1,2,..7} の数字が含まれています。空の文字列 S を持つ頂点 1 から始めて、頂点 N までいくつかの頂点 (制限なし) を移動します。途中の頂点ごとに、文字列 S の右側にそれぞれの数字を追加します。 10 進整数としての S。S がすべての桁で割り切れ、S の桁の和ができるだけ小さくなるようにする方法を見つけてください。
入力
いくつかのテスト ケース (最大 15 個) があり、それぞれ次のように形成されます。
The first line contains a positive integer N (N ≤ 100).
The second line contains N digits (separated by spaces), the i-th digit is the value of the i-th vertex.
N last lines, each contains N values of {0, 1} (separated by spaces), the j-th value of the i-th line is equal to 1 if there is an edge connecting two vertices (i, j), otherwise 0.
入力は N = 0 で終了します。
出力
テスト ケースごとに、検出された最小桁数の合計を 1 行に出力するか、解がない場合は -1 を出力します。
例
入力: 4
1 2 1 4
0 1 1 1
1 0 0 1
1 0 0 1
1 1 1 0
出力: 7
私を導いてください
ノード 1 とノード N を何度でも参照できるように、セルフ ループとサイクルが存在する可能性があります。