テーブルの上に $n$ 個のカードの束があり、$i$ 番目の束には $a_i$ 枚のカードが含まれ、上から $j$ 番目のカードは $s_{i,j}$ です。問題を簡単にするため、カードには高いカードと低いカードの二種類だけを考えます。高いカードなら $s_{i,j}=1$、低いカードなら $s_{i,j}=0$ です。
$m$ 人の賭博師がテーブルを囲んで座り、カードゲームを待っています。あなたはこのゲームのディーラーで、すべての束を積み重ねて一つの大きな山にするのが仕事です。操作できるのは束同士の順序だけです。カードの挿入や除去はできず、束の中のカードの順序も変更できません。
山ができたらカードを賭博師に配ります。$i$ 番目の賭博師には、上から $i$、$m+i$、$2m+i$、$\ldots$、$km+i$、$\ldots$ 番目のカードが配られます。他の賭博師は知りませんが、$b$ 番目の賭博師は実はあなたのボスです。勝利を確実にするため、ボスに配るカードはすべて高いカードで、他の賭博師に配るカードはすべて低いカードでなければなりません。
この条件を満たす束の積み重ね順を求めるか、不可能であると報告してください。有効な答えが存在する場合は、辞書順最小の答えを求めてください。
答えが存在するなら、それは明らかに長さ $n$ の順列です。すべての $1\le i<t$ に対して $p_i=q_i$ かつ $p_t<q_t$ となる整数 $t$ が存在するとき、順列 $P=p_1,p_2,\ldots,p_n$ は順列 $Q=q_1,q_2,\ldots,q_n$ より辞書順で小さいといいます。
入力
各入力ファイルに含まれるテストケースは一つだけです。
入力の最初の行には、束の数、賭博師の人数、ボスの番号を表す三つの整数 $n$、$m$、$b$($1\le n\le2\times10^5$、$2\le m\le2\times10^5$、$1\le b\le m$)が含まれます。
続く $n$ 行のうち、$i$ 番目の行には、$i$ 番目の束を表す文字列 $s_{i,1}s_{i,2}\cdots s_{i,a_i}$($s_{i,j}\in\{0,1\}$、$1\le a_i\le10^6$)が含まれます。
以下が保証されます。
各束には高いカードが少なくとも一枚あります。
カードの総数は $m$ で割り切れます。
カードの総数は $10^6$ 以下です。
出力
有効な答えが存在する場合は、辞書順最小の答えを表す $n$ 個の整数 $d_1,d_2,\ldots,d_n$ を空白区切りで出力してください。$d_i$ は、山の上から $i$ 番目にある束の番号です。
有効な答えが存在しない場合は、「-1」(引用符なし)だけを出力してください。
入出力例
入力 1
5 4 3 0100010 00100 001000100 0010 0100010
出力 1
2 1 3 5 4
入力 2
4 2 1 010 10101 010 10101
出力 2
2 1 4 3
入力 3
1 5 3 001000010000100
出力 3
1
入力 4
2 5 3 01000 00010
出力 4
-1
入力 5
1 5 3 11111
出力 5
-1