Цены на бензин | 프로그래밍의 벗 PivotOJ
PivotOJ

Цены на бензин

시간 제한: 3500ms메모리 제한: 1024MB출처: MOOI 2022-23 finalBOJ 30633

문제

Берляндия --- это огромная страна, состоящая из nn городов. Дорожную сеть Берляндии можно представить в виде корневого дерева, то есть всего в стране n1n - 1 дорога, и от любого города можно добраться до любого другого ровно по одному пути, если не посещать никакой город дважды. Для удобства представления страны, для каждого города ii зафиксирован город pip_i, равный первому городу, в который надо ехать из города ii, чтобы добраться до города 11. Иными словами, город pip_i равен предку города ii, если дерево подвесить за город 11.

В каждом городе Берляндии работает по одной заправке. У заправок особое ценообразование, и для каждой заправки зафиксирован диапазон цен, за которые там готовы продавать бензин. Заправка в городе с номером ii готова продавать бензин по любой цене от lil_i до rir_i включительно.

Король Берляндии --- примерный семьянин, и в течение mm лет каждый год у него рождалось по двое сыновей. Дети короля с раннего детства участвуют в государственных делах, и в конце каждого года они проверяют честность цен на бензин. С самого рождения дети короля, которые рождены в год ii, отвечают за проверку цен на бензин на путях от города aia_i до города bib_i и от города cic_i до города did_i соответственно.

Проверка происходит следующим образом: оба ребенка одновременно начинают путь от городов aia_i и cic_i соответственно. Первый сын короля, рождённый в год ii, двигается по пути от города aia_i до города bib_i, а второй --- от города cic_i до города did_i. Дети проверяют, что цена на бензин в городе aia_i совпадает с ценой на бензин в городе cic_i. Далее они проверяют, что цена на бензин во втором городе на пути от aia_i до bib_i совпадает с ценой во втором городе на пути от cic_i до did_i. Далее они повторяют то же самое для пары третьих городов на их путях и так далее. В конце они проверяют, что цена на бензин в городе bib_i совпадает с ценой на бензин в городе did_i. Гарантируется, что длина пути от города aia_i до города bib_i совпадает с длиной пути от города cic_i до города did_i.

Заправки должны строго подчиняться законам, а поэтому все проверки цен на бензин не должны выявлять нарушений. Помогите заправкам Берляндии выяснить, сколькими способами они могут выставлять цены на бензин в течение mm лет. Другими словами, для каждого ii от 11 до mm посчитайте, сколькими способами можно выставить цены на бензин во всех заправках, чтобы после рождения первых ii пар детей короля, все их проверки не выявили нарушений, а на любой заправке цена находилась в допустимом диапазоне цен. Так как число таких способов может быть большим, посчитайте ответ по модулю 109+710^9 + 7.

출력

В первой строке дано единственное целое число nn (1n2000001 \le n \le 200\,000) --- число городов в Берляндии.

Во второй строке даны (n1)(n - 1) чисел p2, p3, p4, , pnp_2,\ p_3,\ p_4,\ \ldots,\ p_n (1pin1 \le p_i \le n), где pip_i обозначает номер следующего города на пути из города ii в город 11.

В каждой из следующих строк даны по два целых числа lil_i и rir_i (1liri<109+71 \le l_i \le r_i < 10^9+7), задающие допустимый диапазон цен на заправке номер ii.

В следующей строке дано единственное целое число mm (1m2000001 \le m \le 200\,000) --- количество лет, в течение которых у короля рождалось по два сына.

В каждой из следующих mm строк даны по четыре целых числа aia_i, bib_i, cic_i и did_i (1ai,bi,ci,din1 \le a_i, b_i, c_i, d_i \le n), задающие два пути, на которых будут проверять цены на бензин дети короля, рождённые в год ii. Гарантируется, что длина пути между городами aia_i и bib_i равна длине пути между городами cic_i и did_i.

힌트

Рассмотрим первый пример.

После рождения первых двух сыновей цены в городах 11 и 22 должны быть равны. Всего существует 2 способа выбрать одинаковую цену на бензин для городов 11 и 22, чтобы она входила в допустимый диапазон цен для этих городов. Значит, всего способов выставить цены на бензин: 2331=182 \cdot 3 \cdot 3 \cdot 1 = 18.

Вторая пара сыновей будет проверять цены на путях 121 - 2 и 212 - 1. Значит, цены на бензин в городах 11 и 22 должны совпадать, что уже выполняется. Поэтому после рождения второй пары сыновей ответ никак не изменился.

Третья пара сыновей будет проверять цены на путях 31243 - 1 - 2 - 4 и 42134 - 2 - 1 - 3. Тогда цена не бензин в городе 33 должна быть равна цене в городе 44, и цена в городе 11 должна быть равна цене в городе 22. Цены в городах 11 и 22 уже одинаковые. Для городов 33 и 44 существует 2 способа выбрать одинаковую цену на бензин, чтобы она входила в допустимый диапазон цен для этих городов. Значит, всего способов выставить цены на бензин: 221=62 \cdot 2 \cdot 1 = 6.

Четвертая пара сыновей будет проверять цены на путях 31243 - 1 - 2 - 4 и 31253 - 1 - 2 - 5. Это означает, что цены в городах 44 и 55 должны быть равны, и так как цены в городах 33 и 44 уже совпадают, то в городах 33, 44 и 55 должна быть одинаковая цена на бензин. Цена на бензин в городе 33 должна быть не больше 3, а цена на бензин в городе 55 должна быть не меньше 4. Значит, после рождения четвёртой пары сыновей не существует способов выставить цены на бензин так, чтобы все проверки выполнялись и цены находились в необходимых диапазонах.

예제

예제 1

입력
5
1 1 2 2
2 4
1 3
1 3
2 4
4 4
4
1 1 2 2
1 2 2 1
3 4 4 3
3 4 3 5
출력
18
18
4
0

예제 2

입력
8
1 2 3 4 5 8 6
3 7
2 6
3 8
5 10
5 8
2 9
3 8
6 8
4
1 3 7 6
4 1 5 7
1 7 7 1
1 8 2 7
출력
720
120
120
1
이 문제는 채점 준비 중입니다. 테스트 데이터가 확보되면 제출이 가능합니다.