あなたは噂を信じますか?
ある有名な心理学の実験では、人々に2本の線を見せ、どちらの線が長いかを答えさせた。実際には1人を除いて残りの参加者は実験者によって事前に操作された人物であった。操作された人物たちは、実際には短い線を長いと答えた。周囲の全員が同じ回答をすると、本物の被験者もまた短い線を長いと答えた。この実験は、人々が周囲の人々の影響を強く受けることを示したが、噂もこれと同じである。
噂は最初の流布者から始まる。最初の流布者は複数人である可能性があり、最初の流布者を除いて、自ら噂を作り出して信じる人はいない。
毎分、噂を信じている人はすべての周囲の人々に噂を同時に広め、群衆の中の人は周囲の人の半分以上が噂を信じているとき、自分自身も噂を信じるようになる。
噂を信じた瞬間から他の言葉は聞かなくなるため、一度信じた噂は信じ続ける。
このとき、人々が噂を初めて信じ始める時間を求めてみよう。
入力
1行目に人の数 $N$ が与えられる。($1 \le N \le 200\,000$) これは1番から $N$ 番までの人がいることを意味する。
2行目から $N$ 行が与えられる。このうち $i$ ($1 \le i \le N$) 番目の行には、$i$ 番の人の周囲の人の番号と、入力の最後を示す $0$ が空白で区切られて与えられる。番号は $1$ 以上 $N$ 以下の自然数であり、同じ行に重複した番号はない。
自分自身が周囲の人である場合や、一方的に周囲の人である場合はなく、全体の双方向の周囲関係は $1\,000\,000$ 個を超えない。
次の行には、噂を広める最初の流布者の数 $M$ が与えられる。($1 \le M \le N$)
最後の行には、最初の流布者の番号が空白で区切られて与えられる。最初の流布者の番号は重複しない。
出力
$N$ 個の整数 $t_1, t_2, \dots, t_N$ を空白区切りで出力する。$t_i$ は $i$ 番の人が噂を初めて信じ始めた時間(分)であり、十分な時間が経過しても噂を信じない場合は $-1$ である。最初の流布者は噂を0分から信じ始めたと考える。
入出力例
入力 1
7 2 3 0 1 3 0 1 2 4 0 3 5 0 4 0 0 0 2 1 6
出力 1
0 1 2 3 4 0 -1
入力 2
7 2 4 0 1 3 0 2 5 0 1 5 6 0 3 4 6 7 0 4 5 7 0 5 6 0 1 6
出力 2
4 4 3 3 2 0 1
注記
例1の説明
0分:最初の流布者(1番、6番の人)が噂を生成する。
1分:1番の人は2番、3番の人に噂を広める。2番の人は周囲の2人のうち1人が噂を信じているため、噂を信じるようになる。3番の人は周囲の3人のうち1人しか噂を信じていないため、噂を信じない。6番の人は噂を広める周囲の人がいない。
2分:1番、2番の人は3番の人に噂を広める。隣接する3人のうち半分以上である2人が噂を信じているため、3番の人も2分から信じ始める。
3分:3番の人は4番の人に噂を広める。4番の人が信じ始める。
4分:5番の人も噂を信じるようになる。7番の人はその後十分な時間が経過しても噂を信じない。