Бандити на дереві
Існує міст, пронумерованих від до . Усі міста з'єднані за допомогою доріг так, що від кожного міста можна дістатися до кожного. Кожна дорога має певну довжину.
Відомо, що місто з номером було захоплено кланом бандитів з номером () в момент часу . Після захоплення міста (тобто, починаючи з моменту часу включно), через нього можуть проходити тільки представники клану .
Дайте відповідь на запитань наступного вигляду:
u v b T
— чи зможе представник клану пройти від міста до міста , якщо він розпочне свою подорож у час . У випадку неможливості здійснення подорожі, необхідно також сказати номер першого міста на шляху від до , через яке неможливо буде пройти.
Вхідні дані
Перший рядок містить єдине ціле число () — кількість міст.
Кожен з наступних рядків містить два цілі числа та (, ), що позначають дорогу між містами та довжиною . Індексація починається з .
Наступний рядок містить цілих чисел (), що позначають номера кланів, що захопили відповідне місто.
Наступний рядок містить цілих чисел (), що позначають моменти часу захоплення кожного міста.
Наступний рядок містить єдине ціле число () — кількість запитань.
Останні рядків описують запитання. Кожен з них містить чотири цілі числа , , , (, ) — номера початкового та фінішного міст чергового шляху, номер клану мандрівника, та момент часу початку подорожі відповідно.
Вихідні дані
Для кожного запитання виведіть в окремому рядку єдине ціле число — номер першого міста на шляху від до , через яке неможливо буде пройти. Якщо такого міста не існує, виведіть «-1
».
Зверніть увагу на великий об'єм вхідних та вихідних даних у цій задачі. Радимо використовувати швидкі засоби введення та виведення, наприклад scanf/printf
замість cin/cout
у мові C++
, та sys.stdin.readline
замість input
у Python
. Також радимо використовувати інтерпретатор PyPy
при розв'язанні задачі на Python
.
Приклади
Оцінювання
( балів): ;
( балів): ;
( балів): ;
( балів): ;
( балів): ;
( балів): ;
( балів): ;
( балів): без додаткових обмежень.