1198 - 給料計算

時間制限 2 秒 / メモリ制限 256 MB / 得点 10 / Writer root / x 0 / 統計 /


TLE
2sec
MLE
256MB
得点
10

PCK社では 0 から N1 の ID が割り当てられた N 人の従業員が働いている。また、0 から N1 の ID が割り当てられた N 個の仕事があり、仕事 j にかかる時間は tjである。

PCK社では、従業員により多くの仕事を覚えてもらうため、以下の規則で仕事の割り当てを変更している。

  • 初日を 0 として、d 日目に仕事 j が従業員(j+d)%N に割り当てられる。ここで、p%qpq で割った余りを表す。

PCK社の給料は時給に応じて日当で支払われる。時給が a の従業員が仕事 j を行うと a×tj 円の給料が発生する。従業員 i の最初の時給は si円だが、従業員のモチベーションを上げるため、ユニークな方法で給料が上がる。PCK社の昇給表には 0 から M1 の番号が付けられた係数 fkが書かれており、毎日ある一人の従業員の時給が以下の規則で上昇する。

  • 初日を 0 として、d 日目が終了した時点で、従業員 d%N の時給が f(d%M)円上昇する。ただし、昇給が行われるのは日当が支払われた後である。

PCK社の経理担当であるあなたは、初日から D 日分の給料の総額を計算しなければならない。

各従業員の最初の時給、各仕事にかかる時間、昇給表の内容、日数を入力とし、給料の総額を求めるプログラムを作成せよ。ただし、答えは非常に大きくなる場合があるので、1000000007(=109+7)で割った余りを出力せよ。

入力

入力は以下の形式で与えられる。

N M D
s0 s1 ... sN1
t0 t1 ... tN1
f0 f1 ... fM1

1行目に従業員の人数と仕事の個数を表す数N (1N100)、係数の個数M (1M100)、日数D (1D1015)が与えられる。ただし、N+Mは100以下である。2行目に各従業員の最初の時給si (1si108)が整数で与えられる。3行目に各仕事にかかる時間tj (1tj108)が整数で与えられる。4行目に昇給表の 各係数fk (1fk108)が整数で与えられる。

出力

給料の総額を1行に出力する。

入出力例

入力例1

3 2 2
3 2 1
1 2 3
1 2

出力例1

26

入力例2

3 2 5
3 2 1
1 2 3
1 2

出力例2

91