問題文
長さがNの数列Aが与えられます.この数列に対してQ個のクエリが与えられるので,順に処理してください.
クエリ
i番目(1≤i≤Q)のクエリでは,wi,xi,yi,zi(1≤wi≤xi≤N かつ 1≤yi≤zi≤N)が与えられるので,wi≤k≤xi∏Ak と yi≤k≤zi∏Ak の最大公約数を1000000007で割った余りを出力する.
ただし,l≤k≤r∏Ak とは Al×Al+1×Al+2×⋯×Ar のことである.
制約
- 1≤N≤105
- 1≤Q≤105
- 1≤Ai≤102(1≤i≤N)
- 各クエリにおいて 1≤w≤x≤N かつ 1≤y≤z≤N
- 入力はすべて整数
入力
出力
各クエリにおいて,w≤k≤x∏Ak と y≤k≤z∏Ak の最大公約数を1000000007で割った余りを出力.
サンプル
入力例1
10 5
39 49 9 22 28 5 23 40 26 14
1 3 7 10
3 7 4 6
5 8 3 5
8 8 3 3
2 2 2 2
- クエリ1
39×49×9=17199 と 23×40×26×14=334880 の最大公約数は 91 です.
- クエリ2
9×22×28×5×23=637560 と 22×28×5=3080 の最大公約数は 3080 です.
- クエリ3
28×5×23×40=128800 と 9×22×28=5544 の最大公約数は 56 です.
- クエリ4
40 と 9 の最大公約数は 1 です.
- クエリ5
49 と 49 の最大公約数は 49 です.