PCK社では 0 から N−1 の ID が割り当てられた N 人の従業員が働いている。また、0 から N−1 の ID が割り当てられた N 個の仕事があり、仕事 j にかかる時間は tjである。
PCK社では、従業員により多くの仕事を覚えてもらうため、以下の規則で仕事の割り当てを変更している。
- 初日を 0 として、d 日目に仕事 j が従業員(j+d)%N に割り当てられる。ここで、p%q は p を q で割った余りを表す。
PCK社の給料は時給に応じて日当で支払われる。時給が a の従業員が仕事 j を行うと a×tj 円の給料が発生する。従業員 i の最初の時給は si円だが、従業員のモチベーションを上げるため、ユニークな方法で給料が上がる。PCK社の昇給表には 0 から M−1 の番号が付けられた係数 fkが書かれており、毎日ある一人の従業員の時給が以下の規則で上昇する。
- 初日を 0 として、d 日目が終了した時点で、従業員 d%N の時給が f(d%M)円上昇する。ただし、昇給が行われるのは日当が支払われた後である。
PCK社の経理担当であるあなたは、初日から D 日分の給料の総額を計算しなければならない。
各従業員の最初の時給、各仕事にかかる時間、昇給表の内容、日数を入力とし、給料の総額を求めるプログラムを作成せよ。ただし、答えは非常に大きくなる場合があるので、1000000007(=109+7)で割った余りを出力せよ。
入力
入力は以下の形式で与えられる。
N M D s0 s1 ... sN−1 t0 t1 ... tN−1 f0 f1 ... fM−1
1行目に従業員の人数と仕事の個数を表す数N (1≤N≤100)、係数の個数M (1≤M≤100)、日数D (1≤D≤1015)が与えられる。ただし、N+Mは100以下である。2行目に各従業員の最初の時給si (1≤si≤108)が整数で与えられる。3行目に各仕事にかかる時間tj (1≤tj≤108)が整数で与えられる。4行目に昇給表の 各係数fk (1≤fk≤108)が整数で与えられる。
出力
給料の総額を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