Time Limit: 2 sec / Memory Limit: 512 MB
配点 : 200 点
問題文
W大学ではサークル活動が盛んで、 N 個の競技プログラミングサークルがあります。 サークル i (0≤i≤N−1) の部員の人数は Ki であり、その j (0≤j≤Ki−1) 番目の部員のレートは Ai,j です。
毎日、どのサークルがパソコン室を使うかで言い争いになり、サークル同士は競技プログラミング対決で決着をつけます。対決はそれぞれのサークルの部員が順番に1対1の勝負を行いますが、人数が少ない方のサークルの部員は多い方の人数に合わせて、対決が終わるまでローテーションします。
サークル X とサークル Y の対決の「白熱度」は対決する部員のレートの積の総和で表されます。式で表すと、以下のようになります。
- 数列AX,AYについて、0≤j≤max(KX,KY)−1における∑(AX, jmodKX×AY, jmodKY)の値
今、対決が Q 回行われ、i (0≤i≤Q−1) 番目の対決はサークル Xi とサークル Yi の対決でした。それぞれの対決について、「白熱度」を求めてください。ただし、答えは非常に大きくなることがあるので、109+7で割ったあまりを答えること。
制約
- 2≤N≤200000
- 1≤Ki
- ∑Ki≤200000
- 1≤Ai,j≤109
- 1≤Q≤200000
- 0≤Xi,Yi≤N−1
- Xi≠Yi
- 入力される値はすべて整数である。
入力
入力は以下の形式で標準入力から与えられる。
N K0 A0,0 A0,1 … A0,K0−1 K1 A1,0 A1,1 … A1,K1−1 ⋮ KN−1 AN−1,0 AN−1,1 … AN−1,KN−1−1 Q X0 Y0 X1 Y1 ⋮ XQ−1 YQ−1
出力
それぞれのクエリに対して答えを109+7で割ったあまりを出力してください。
入力例 1Copy
3 1 7 2 5 6 3 3 3 4 3 0 1 0 2 1 2
出力例 1Copy
77 70 53
例えば、二つ目のクエリに対しては、数列A0,A2に注目しK0=1,K2=3より答えはA0,0×A2,0+A0,0×A2,1+A0,0×A2,2=70となります。
三つ目のクエリに対しては、数列A1,A2に注目しK1=2,K2=3より答えはA1,0×A2,0+A1,1×A2,1+A1,0×A2,2=53となります。
入力例 2Copy
2 3 1000000000 999999999 999999998 10 1 2 3 4 5 6 7 8 9 10 1 0 1
出力例 2Copy
999999571
109+7で割ったあまりを出力してください。