ファッショニスタであるあなたは、互いに異なる服を 着持っています。これから 日間、毎日この中から 着を選んで着る予定です。
ファッショニスタなのに服が 着では少なすぎる、ですって? 賢いあなたには、ちゃんと考えがあります。
あなたは、今日会う人に、直前の 日間に見せた服をもう一度見せないことにしました。 そのため、各日について、その日に会う人たちがあなたの服装を見た日を、直前の 日間からすべてリストアップしてあります。
日目について、何日前かを表す 個の整数 が与えられます。 日目に着る服が、指定された各日 に着た服のいずれとも異なるように、服を選ぶ計画を立てます。 例えば , ならば、昨日着た服も 日前に着た服も今日は着ません。
指定された日のいずれかに着た服は、今日は着ることができません。 それ以外の服は、今日会う人たちに直前の 日間には見せていないので、自由に着ることができます。
条件を満たす計画が何通りあるかを求め、 で割った余りを出力してください。 ある日について着る服が異なるとき、またそのときに限り、 つの計画は異なるものとします。
行目に、計画を立てる日数 が与えられる。
続く 行に、 日目から 日目までの情報が順に与えられる。 日目の行には、整数 に続いて、 個の整数 が空白区切りで与えられる。 の場合、その行には のみが与えられる。
条件を満たす計画の個数を で割った余りを出力せよ。
入力例 では、各日に選べる服の数は順に , , , , なので、答えは です。
入力例 で、 日目と 日目に同じ服を着る計画は 通りあります。 異なる服を着る計画は 通りなので、答えは です。
入力例 では、最初の 日間に同じ服を着た場合、 日目には 着から選べます。異なる服を着た場合は 着から選べます。 したがって、答えは です。