問題文
ビ太郎は,大きな円形の湖の周りに住んでいる.湖の周りの長さは L であり,湖の周りのある地点にはビ太郎の家がある.ビ太郎の家から湖の周りを時計回りに x (0 ≦ x < L) 移動した地点を地点 x と呼ぶ.現在,湖の周りで行われるマラソン大会が企画されている.
ビ太郎はマラソン大会は以下のように行われる予定であることを聞いた.
0からL - 1までの番号が付けられたゼッケンが1枚ずつ用意されている.マラソン大会の参加者はいずれかのゼッケンを着用する.ゼッケンl(0 ≦ l ≦ L - 1) を着用する参加者のスタート地点は地点lとなる.- マラソン大会がスタートした後,
Tビョウにわたり,参加者はそれぞれの速度で湖の周りを時計回りに移動する.マラソン大会がスタートしてから,tビョウ (0 ≦ t ≦ T) 経った時点を時刻tと呼ぶ.
ビ太郎はマラソン大会の参加者名簿を持っている.現在は N 人の参加者が参加者名簿に記載されていて,i 番目の参加者 (1 ≦ i ≦ N) はゼッケン Ai を着用し,1 ビョウあたり Si の速度で湖の周りを時計回りに移動する予定である.
参加者名簿を元に,ビ太郎はマラソン大会中に起こる衝突の回数を求めた.ここで,衝突とは異なる参加者 2 人が同じ地点にいることを指すものとする.厳密には,0 ≦ p < q ≦ L - 1 を満たす整数 p, q と 0 ≦ t ≦ T を満たす実数 t からなる組 (p, q, t) で,以下の条件を満たすものの個数を求めた.
- ゼッケン
pを着用した参加者がいる. - ゼッケン
qを着用した参加者がいる. - ゼッケン
pを着用した参加者とゼッケンqを着用した参加者が,時刻tに同じ地点にいる.
しかし,その後参加者名簿に Q 回の変更が行われた.j 番目 (1 ≦ j ≦ Q) の変更は 2 つの整数 Xj, Yj で表され,以下のようなものである.
- 現在,ゼッケン
Xjを着用し,1ビョウあたりYjの速度で湖の周りを時計回りに移動する人が参加者名簿に記載されている場合,その人を参加者名簿から削除する.そうでない場合,ゼッケンXjを着用し,1ビョウあたりYjの速度で湖の周りを時計回りに移動する人を新たに参加者名簿に追加する.
ただし,いずれの変更が終了した時点でも,参加者名簿に記載されている参加者は 2 人以上おり,かつ参加者の着用するゼッケンは相異なることが保証される.
ビ太郎はそれぞれの変更が終了した時点での参加者における,マラソン大会中に起こる衝突の回数を知りたい.問題文の制約より,マラソン大会中に起こる衝突の回数は有限であることが証明できる.
マラソン大会と参加者名簿への変更の情報が与えられたとき,それぞれの変更が終了した時点での参加者における,マラソン大会中に起こる衝突の回数を 1 000 000 007 で割ったあまりを求めるプログラムを作成せよ.
制約
2 ≦ N.N ≦ L ≦ 109.1 ≦ T ≦ 109.0 ≦ Ai≦ L - 1(1 ≦ i ≦ N).Ai≠ Aj(1 ≦ i < j ≦ N).1 ≦ Si≦ 109(1 ≦ i ≦ N).1 ≦ Q.N + Q ≦ 100 000.0 ≦ Xj≦ L - 1(1 ≦ j ≦ Q).1 ≦ Yj≦ 109(1 ≦ j ≦ Q).- いずれの変更が終了した時点でも,参加者は
2人以上いる. - いずれの変更が終了した時点でも,参加者のスタート地点は相異なる.
- 入力される値はすべて整数である.
小課題
- (
10点)T = 1,Si≦ 2(1 ≦ i ≦ N),Yj≦ 2(1 ≦ j ≦ Q). - (
8点)N ≦ 2 000,Q = 1. - (
11点)N ≦ 2 000,Q ≦ 2 000. - (
27点)Q = 1. - (
34点)N + Q ≦ 78 000. - (
10点) 追加の制約はない.
入力
入力は以下の形式で与えられる.N L TA1 A2 … ANS1 S2 … SNQX1 Y1X2 Y2:XQ YQ
出力
Q 行に出力せよ.j 行目 (1 ≦ j ≦ Q) には j 番目の変更が終了した時点での参加者における,マラソン大会中に起こる衝突の回数を 1 000 000 007 で割ったあまりを出力せよ.
入出力例
入力例 1
3 7 2
1 6 3
4 1 6
1
4 2
出力例 1
7
1 番目の変更が終了した時点での参加者は 4 人である.それぞれの参加者についての情報は以下のようになる.
- ゼッケン
1を着用し,地点1からスタートする.1ビョウあたり4の速度で時計回りに移動する. - ゼッケン
6を着用し,地点6からスタートする.1ビョウあたり1の速度で時計回りに移動する. - ゼッケン
3を着用し,地点3からスタートする.1ビョウあたり6の速度で時計回りに移動する. - ゼッケン
4を着用し,地点4からスタートする.1ビョウあたり2の速度で時計回りに移動する.
1 番目の変更が終了した時点での参加者におけるマラソン大会中の衝突は以下の 7 回となる.
- 時刻
1÷4に,ゼッケン3を着用した参加者とゼッケン4を着用した参加者が同じ地点9÷2にいる. - 時刻
3÷5に,ゼッケン3を着用した参加者とゼッケン6を着用した参加者が同じ地点33÷5にいる. - 時刻
3÷2に,ゼッケン1を着用した参加者とゼッケン4を着用した参加者が同じ地点0にいる. - 時刻
5÷3に,ゼッケン1を着用した参加者とゼッケン6を着用した参加者が同じ地点2÷3にいる. - 時刻
2に,ゼッケン3を着用した参加者とゼッケン4を着用した参加者が同じ地点1にいる. - 時刻
2に,ゼッケン3を着用した参加者とゼッケン6を着用した参加者が同じ地点1にいる. - 時刻
2に,ゼッケン4を着用した参加者とゼッケン6を着用した参加者が同じ地点1にいる.
この入力例は小課題 2,3,4,5,6 の制約を満たす.
入力例 2
3 6 1
1 3 4
1 1 1
2
0 2
1 1
出力例 2
1
0
1 番目の変更が終了した時点での参加者は 4 人である.それぞれの参加者についての情報は以下のようになる.
- ゼッケン
1を着用し,地点1からスタートする.1ビョウあたり1の速度で時計回りに移動する. - ゼッケン
3を着用し,地点3からスタートする.1ビョウあたり1の速度で時計回りに移動する. - ゼッケン
4を着用し,地点4からスタートする.1ビョウあたり1の速度で時計回りに移動する. - ゼッケン
0を着用し,地点0からスタートする.1ビョウあたり2の速度で時計回りに移動する.
1 番目の変更が終了した時点での参加者におけるマラソン大会中の衝突は以下の 1 回となる.
- 時刻
1に,ゼッケン0を着用した参加者とゼッケン1を着用した参加者が同じ地点2にいる.
2 番目の変更が終了した時点での参加者は 3 人である.それぞれの参加者についての情報は以下のようになる.
- ゼッケン
3を着用し,地点3からスタートする.1ビョウあたり1の速度で時計回りに移動する. - ゼッケン
4を着用し,地点4からスタートする.1ビョウあたり1の速度で時計回りに移動する. - ゼッケン
0を着用し,地点0からスタートする.1ビョウあたり2の速度で時計回りに移動する.
2 番目の変更が終了した時点での参加者におけるマラソン大会中の衝突は 0 回となる.
この入力例は小課題 1,3,5,6 の制約を満たす.
入力例 3
2 100000 993754689
58683 3478
28489 48682814
1
28482 39599461
出力例 3
9265409
1 番目の変更が終了した時点での参加者は 3 人である.それぞれの参加者についての情報は以下のようになる.
- ゼッケン
58 683を着用し,地点58 683からスタートする.1ビョウあたり28 489の速度で時計回りに移動する. - ゼッケン
3 478を着用し,地点3 478からスタートする.1ビョウあたり48 682 814の速度で時計回りに移動する. - ゼッケン
28 482を着用し,地点28 482からスタートする.1ビョウあたり39 599 461の速度で時計回りに移動する.
1 番目の変更が終了した時点での参加者におけるマラソン大会中の衝突は 967 009 272 178 回となる.よってマラソン大会中に起こる衝突の回数を 1 000 000 007 で割ったあまりは 9 265 409 となる.
この入力例は小課題 2,3,4,5,6 の制約を満たす.
入力例 4
7 100 100
34 12 46 23 57 63 99
12 34 23 12 34 12 23
5
67 34
99 23
33 34
99 12
23 12
出力例 4
330
264
341
440
341
この入力例は小課題 3,5,6 の制約を満たす.