/**
* Author : M1nK
* Device : Laptop
* Created : 06.07.2025
* Problem : https://o...content-available-to-author-only...i.info/problem/bedao_r09_treetravel
**/
/*
▒███████▓▒░
███▓░░░░░░░████▓
░██░░░░░░░░███▓ ░▒
██████████████████████████ ██░░░░░░░██▓▓█████▒
███████░░░░░░░███░░░░░░░░░░░░░░░███▓ ▓███░░░░░████▒░░░▒████
█████████████░░░░░░░░░░░░██░░░░░░░░░░░░░░░░░░████████▓▓██░░░███░░░░░░░░░░██░
▒██░░░░░░░░░░░░░░░░░░░░░░█░░░░░░░░░░░░░░░░░░░▓██████▓▓▓▓██░██▓░░░░░░░░░░░░▒█
░███░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░██▓▓▓▓██▓███████▓████████░░░░░░█▓
███▓░░░░░░██░░░░░░░█░░░░░░░░░░░░░█▓░░░░░▒█▓▓▓▓▓▓██▓▓███▓▓▓█▓ ███░░░██▒
█▓░░░░██░░░░░░░░█▓░░░░░░░░░░░░░░█▓░░░░░░███▓▓▓██▓▓▓▓▓▓▓██ ░█▓░███
▒█▒░░░██░░░░░░░░░██░░░░░░░░░░░░░░▓██▓░░░░░░▒█████████▓▓▓███ ▓████░
░█▒░░░██░░░░░░░░░░██░░░░░░░░░░░░░░████░░░░░░░░░░▒█████████░▓█ ███
██░░░██░░░░░░░░░░▒█▒░░░░░░░░░░░░░██░▓██░░░░░░░░░░░░░░░░█▓░░░█▓
▒█▒░░░█▒░░░░░░░░░░▒█▒░░░░░░░░░░░░▓██░░▒██░░░░░░░░░░░░░░░░░░░░▒█░
██░░░███░░░░░░░░░░██▒░░░░░░░░░░░▒██░░░░░██░░░░░░░░░░░░░░░░░░░░██
██░░░▒███░░░░░░░░████▓░░░░░░█░░░▒██▒░░░░░░██░░░░░░░░█▒▒██░░░░░░██▓
██░░░░████░░░░░░██▓ ██░░░░░██░░▒██░█▒░░░░░░██░░░░░░░██▒▒██░░░░░░██░
██░░░░██░▒██░░░░█▓ ▒█▒░░░███░▓█▒ ▓█░░░░░░▒█▒░░░░░░▒██░░██░░░░░░██░
░█▒░░░░██░░░███▒▒█▒ ▓█░░░█████░ ▓██░░░░░██░░░░░░░██░░░██░░░░░░████▒ ▓
██░░░░░██▒░░▓█░████ ▓█▓▒█░█▓ ░██▓░░░░██░░░░░░▓█▓░░▒██▓░░░░░░░▓██████
░█▒░░░░░██▓░░██ ░███ ░ ▒███░░██░░░░░░▒██░░░████▓░░░░░░▒██▓
███████████░▒█▒ ██ ▒████▒░░░░░▒██░░░░██▒▓██████▓
██░██░ ██░░░░░███░░░░▒██░░██
▒█▓▒█░ ▓█░░░░▒██▓░░░░░██▓░░█▒
██░█▓ ██ ▓▓░░░▒███▒░░░░░▒██░░█▓
██░▒█ ██████████████ █▒░░█████░░░░░░░██░░█▒
██░░██ █▓▓▓▓▓▓▓▓▓▓▓██ ░█░▓██▓██▓░░░░░░░██░░█▒
██░████░ ██▓▓▓▓▓▓▓▓██ █████ ░██░░░░░░░███░░█░
██████▓██ █▓▓▓▓▓▓██ ▓█▓░ ▒█▓░░░░░░░░██░░░█░
███ ██░░██░ █████ ░██░░░░░░░░░██▒░░░█░
██░░░░███░ ░░██▓░░░░░░░░░░██▒░░░░█░
██░░▓░░░███▓░ ▒███▓░░░░░░░░░░░███░░░░░░█▒
██████▓░░░▒████▓░ ░█▓░░░░░░░░░░██▓ ██▓░░░░▒█
▓██ ░████████████████▓▓░░░░░░░░░░▒██████▓▒▒▒▓██▓ ▒███▒░░██
▒ ▒█████░ ▓█▓▓▓▓███▓████████████░░░▒█████░░▒█▒ ▒████
▒▓████▓ ▒█▓▓▓▓▓▓███▓▓▓▓▓▓▓▓▓█ ▓███████
▓███▓▓▓▓ ░█▓▓▓▓███▓▓▓▓▓▓▓▓▓▓██ ▓▓▓▓▓████▓
░████░███▓▓▓█▓ ░████▓██▓██████████▓▒ ░▓▓▓▓████▓██▓
░███ ░█████ ██▓▓██▓▓▒███▓███▒ ███░▓▓▓▓███░▒████▒
▒██▒░██ ██████ ███ ▓▓ ░█████ ░████████░ ░██░▓▓█▒ ░██
███████████████▒░░░░▒█░ ██░░░█░ ▒▓ ▓█░░░▒█░ ██░░▒▓████▓▓░ ████
█▒░░░░░░░██▒░░░░░░░▒█░ ▒█▒░████▓▓▓▓█████████▒ ▓████▓██░ ██▓░░▓▓░░▒▓▓███░ ███░▒██
░██░░▒██▓░░░░░░░░░░▓██ ░██░ ░ ▒█▓▓▓▓▓▓▓▓▓▓██████████░ █▓ ██▒░░░▒▓░▒▓▓░░█████████████▓░░░░░██
██▓░░░░░░░░░░▒██▓ █▓ ░█░ ███████████▓▓▓▓▓███████████████▒██████░░░▓▓▓▓░░░░░░░░███▒░░░░░░░░░██
▓█░░░░░░░░▓██▒ ░█▓███████▓▓▓▓██████████████▓▓▓▓▓▓▓▓▓▓████▓ ▓██▓▓▓░░░░░░░░░░░░░▓██▒░░░███
█▒░░░░░░▓██ ████▓▓▓▓▓████ ██▓▓▓▓▓▓▓█░████▓▓▓▓▓▓▓████▒ ▓▓▓▓███▒░░░░░░░░░░░▒█████▒
█▓░░░░░██ ░███▓▓▓████▓ ██▓▓▓▓▓▓▓▓█▒ ░█████████▒ ██ ▓▓ ░▓ ███▒░░░░░░░░░███
██▒░░░██ █▓▓██████ ░██▓▓▓▓▓▓▓▓▓█▒ ░███████████ ░▓▓▓▓▓▓▓▒ ▒██▒░░░░░░░██
███░░█▓ ██▓█████████████████████████████▒ █████████ ██░░░░░░██
▓█████ ████████▒ ░████████ █▒░░░░██
░███████ ███████▒ █▒░░▓█
██████░ ██████ ██░▓█▒
▒███ ███ ████░
░████
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣀⣀⣀⣀⣀⣀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣤⣶⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣶⣶⣦⣤⣀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⣦⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣠⣾⣿⣿⣿⣿⣿⣿⣿⣿⡿⣿⢿⣟⡿⣿⢿⡿⣿⢿⡿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣤⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣠⣾⣿⣿⣿⣿⣿⣿⣿⣻⣽⡾⣽⣯⢿⣾⣻⣽⣯⢿⣽⣯⢿⣳⣟⣾⡽⣯⣟⡿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣾⣿⣿⣿⣿⣿⣿⣟⡷⣯⣷⢯⣟⡿⣞⣿⣳⣯⣷⣻⣟⣾⣽⣻⣟⣾⣽⣻⢷⣻⣽⡷⣯⢿⣽⢿⣿⣿⣿⣿⣿⣿⣿⣦⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣰⣿⣿⣿⣿⣿⣿⣟⡷⣯⢿⣻⢾⣟⣯⢿⣻⢷⣯⡷⣯⣷⢿⣽⢾⡷⣯⣟⣾⢯⡿⣯⡷⣟⣿⣻⢾⣯⡷⣿⣻⣿⣿⣿⣿⣿⣿⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣼⣿⣿⣿⣿⣿⣿⣻⣞⣿⡽⣟⣯⣿⢾⣯⢿⣯⢿⡾⣽⣟⡾⣟⣾⢿⣽⣻⢾⣯⣟⣿⣳⣿⣻⢷⣻⣯⡷⣟⣯⣷⣟⡿⣿⣿⣿⣿⣿⣷⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣾⣿⣿⣿⣿⣿⣟⡾⣷⣻⣾⣻⢯⣟⣾⣟⣾⣟⣾⢿⣽⣟⡾⣟⣯⣟⡿⣞⣿⣻⢾⣽⣾⣻⢾⣽⣻⣟⣾⡽⣿⡽⣾⣽⣻⣽⢿⣿⣿⣿⣿⣿⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣾⣿⣿⣿⣿⣿⣟⡾⣿⡽⣷⢯⣟⡿⣽⣾⣻⢾⣽⡾⣟⣾⣽⣻⢯⣟⣾⣟⣯⣷⢿⣯⣷⣯⣟⣯⣟⣷⣯⣷⣿⣯⣟⣷⣯⣟⣾⣿⡽⣿⣿⣿⣿⣿⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣾⣿⣿⣿⣿⣿⣟⡾⣟⣷⢿⣯⣟⣯⣿⣻⢾⣽⣯⡷⣟⣿⣽⣞⣿⣯⣿⣷⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⣿⣿⣿⣿⣿⣟⡾⣟⣯⣟⡿⣾⣽⣳⣯⣟⡿⣞⣷⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣶⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⣿⣿⣿⣿⣿⣟⡾⣟⣯⢿⣞⣿⣳⣯⣟⣾⣽⣻⣿⣿⣿⣿⣿⣿⣿⣿⠿⠿⠿⠛⠛⠋⠉⠉⠉⠉⠉⠉⠀⠁⠀⠀⠀⠀⠀⠀⠀⠀⠉⠉⠉⠙⠛⠿⠿⣿⣿⣿⣿⣿⣿⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⣿⣿⣿⣿⣿⡿⣞⣿⢯⣟⣯⡿⣾⣽⣳⣯⣟⣾⣿⣿⣿⣿⣿⣿⣏⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡀⠄⠒⠀⠀⠀⠀⠀⠀⠀⠀⠀⠒⠠⠄⢀⣸⠀⠈⠙⠻⣿⣿⣿⣿⣿⣧⡀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣼⣿⣿⣿⣿⣿⣻⢯⣟⣯⣿⣳⡿⣽⡾⣯⡷⣿⣿⣿⣿⣿⣿⣛⢶⣻⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢠⠊⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⣷⠠⡀⠀⠈⠙⣿⣿⣿⣿⣿⡄⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢰⣿⣿⣿⣿⣿⣯⣟⡿⣽⣳⣯⡷⣿⢯⣟⣷⢿⣿⣿⣿⣿⣿⡳⣝⡮⡽⣇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⢆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣤⠤⣠⡀⠀⣿⠀⠈⢆⠀⠀⠈⢻⣿⣿⣿⣿⡀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣾⣿⣿⣿⣿⣿⢾⣽⣻⢯⣟⣾⣽⣟⣯⡿⣾⢿⣿⣿⣿⣿⡿⣵⢫⣞⡵⣻⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠢⢄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠉⣟⠉⠉⠑⡾⠶⠤⠄⠈⣿⣿⣿⣿⣧⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣀⣸⣿⣿⣿⣿⣿⣯⢿⣳⣿⣻⡽⣷⣻⡾⣽⣻⣽⣿⣿⣿⣿⣿⡿⣜⣳⢎⡷⣝⣷⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠁⠐⠠⠄⢀⡀⠀⠀⠀⠀⠀⡇⣀⠀⠤⠊⠀⠀⠀⠀⠀⢸⣿⣿⣿⣿⡄
⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣀⣠⣤⣴⣶⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢾⣻⣟⣾⣽⣻⣽⢷⣟⡿⣽⣞⣿⣿⣿⣿⣿⡿⣜⢧⡻⣜⡳⣞⢷⡄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠉⡇⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣿⣿⣿⡇
⠀⠀⠀⠀⠀⢀⣤⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣯⣟⡿⣾⣽⣞⣯⣟⡿⣾⣻⣽⡾⣿⣿⣿⣿⣿⣿⡹⢮⣝⢧⡟⣼⢫⡽⣆⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡅⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣠⣶⣿⣿⣿⣿⣿
⠀⠀⠀⠀⢀⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⣿⢿⣿⣿⣿⣿⣿⣿⣳⡿⣽⣷⣻⢾⣻⢾⣻⡷⣟⡷⣿⣽⣿⣿⣿⣿⣿⣝⡳⢮⣳⠽⣎⠿⣼⡹⢷⣦⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡟⠀⠀⠀⠀⠀⣀⣀⣤⢶⡞⣯⢳⢧⣿⣿⣿⣿
⠀⠀⠀⢀⣾⣿⣿⣿⣿⣿⡿⣟⡿⣽⣯⢷⣯⢿⣽⣻⣿⣿⣿⣿⣿⣟⡷⣿⣻⢾⣽⣟⣯⡿⣷⣟⡿⣽⡷⣯⣿⣿⣿⣿⣿⣾⣹⢳⣭⣛⢾⡹⣖⢯⣳⢎⡟⣿⢲⡶⢶⢶⣤⣤⣤⡤⣤⣄⡤⣤⢤⡤⣤⢤⡖⣶⢲⡖⣿⢻⡽⣹⢎⡷⣹⢞⡽⢮⣿
⠀⠀⠀⣼⣿⣿⣿⣿⣿⢯⣟⡿⣽⣟⡾⣿⡽⣯⡿⣽⣿⣿⣿⣿⣿⣯⢿⣷⣻⣯⣷⢯⡿⣽⡷⣯⢿⣯⣟⣷⢿⣿⣿⣿⣿⣿⣮⢗⡮⣝⡮⢷⣹⢎⡷⣫⢾⡱⣏⠾⣝⠾⣜⡶⣣⢟⡶⣹⢞⡵⣫⢞⡵⣫⢾⡱⣏⡾⣱⣏⠾⣵⢻⡜⣯⢞⡽⣻⣿
⠀⠀⢰⣿⣿⣿⣿⣿⣯⢿⣯⣟⡿⣞⣿⣳⡿⣯⣟⣿⣿⣿⣿⣿⣿⢯⣿⣞⣷⣟⡾⣿⡽⣷⣟⣿⣻⢾⣽⣾⣻⢿⣿⣿⣿⣿⣿⣿⣼⢣⡟⣧⣛⢮⢷⡹⣎⢷⣫⢟⣮⢻⡵⣫⢗⡯⣞⡵⣫⡞⣵⣛⢾⡱⣏⢷⡹⣞⡵⣚⠿⣜⣧⢻⡜⣯⣾⣿⣿⠀
⠀⠀⣾⣿⣿⣿⣿⡿⣽⣻⡾⣽⣻⣯⡷⣿⡽⣷⣻⢿⣿⣿⣿⣿⣿⢯⣷⢿⡾⣽⣻⢷⣟⡿⣞⣷⢿⣯⡷⣯⣟⣯⣿⣿⣿⣿⣿⣿⣿⣿⣾⣵⣫⡞⣧⢻⡝⣮⢳⣏⡞⣧⢻⡵⣫⢞⡵⣫⢷⡹⢮⣝⡮⣽⢺⣭⢳⡝⡾⣭⣛⠾⣜⡧⣟⣿⣿⣿⣿
⠀⢰⣿⣿⣿⣿⣿⣟⣯⣷⢿⣻⢷⣯⢿⣳⡿⣯⣟⣿⣿⣿⣿⣿⡿⣯⣟⣯⣿⣻⡽⣿⣞⡿⣯⣟⡿⣾⡽⣟⣾⣻⢾⡽⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣿⣼⣷⣮⣝⣞⣧⡻⣵⢫⢾⡱⢯⣝⡳⢮⣳⢭⡗⣮⢻⣼⣳⣧⣯⣿⣾⣿⣿⣿⣿⣿⣿⠀⠀
⠀⣸⣿⣿⣿⣿⣿⣞⡿⣾⣻⢯⣿⢾⣟⣯⢿⣷⣻⣿⣿⣿⣿⣿⣿⣽⢾⣻⡾⣽⣻⢷⣻⣽⣟⡾⣟⣷⢿⣻⢷⣻⣯⢿⣳⣯⢿⡿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠁⠀⠀⠀⠀
⠀⣿⣿⣿⣿⣿⣟⣾⣟⡷⣿⣻⡽⣟⣾⢯⣿⣞⡿⣿⣿⣿⣿⣿⡷⣯⡿⣯⣟⡿⣽⣻⢯⣷⣻⣽⢿⣾⣻⢯⣿⣻⢾⣟⣯⣟⣯⡿⣯⣟⡿⣿⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀
⢰⣿⣿⣿⣿⣿⣟⣾⣽⣻⢷⣟⡿⣯⣟⣯⣷⣟⣿⣿⣿⣿⣿⣿⣟⡷⣿⡽⣯⣟⡿⣽⣻⢷⣻⡽⣟⣾⡽⣟⣷⣻⣟⣾⣻⡾⣽⣻⢷⣻⣽⢯⣿⢾⡽⣯⣟⣿⣻⣟⡿⣿⢿⡿⣿⢿⡿⣿⣿⣿⣿⣿⣿⣿⣿⢿⡿⣿⢿⣿⣻⢿⡽⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀
⢸⣿⣿⣿⣿⣿⣻⣞⣷⢿⣻⡾⣿⣽⢾⣻⡾⣽⣾⣿⣿⣿⣿⣿⣯⢿⡷⣟⣯⡿⣽⢿⣽⣻⢯⣟⡿⣽⣻⢯⣟⣷⢯⣟⡷⣿⣻⡽⣟⣯⣟⣯⣟⣯⣿⣽⢾⣳⡿⣞⣿⡽⣯⣿⣽⣻⣽⣷⣻⣞⣷⣻⣞⣷⢯⣟⣿⡽⣟⣾⡽⣟⣿⣿⣿⣿⣿⡗⠀⠀⠀⠀⠀
⢸⣿⣿⣿⣿⣿⣳⣯⣟⣯⡿⣽⡷⣯⡿⣯⣟⡿⣾⣿⣿⣿⣿⣿⣯⢿⣽⣟⡷⣿⣻⣟⣾⣻⢯⣟⣿⡽⣯⣿⣻⢾⣟⣯⢿⣷⣻⣽⢿⣽⢾⣻⣾⣻⢾⣽⣻⢯⣟⣯⣷⢿⣻⣞⡷⣟⣷⢯⣷⢿⣽⣳⡿⣾⣻⣟⣾⣻⢯⡿⣽⣟⣾⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀
⢸⣿⣿⣿⣿⣿⣳⢿⣞⣯⡿⣷⣟⣯⢿⣷⣻⣟⣿⣿⣿⣿⣿⣿⡽⣿⢾⣽⣻⢷⣯⢿⣞⡿⣯⢿⣞⣿⣳⣯⣟⡿⣞⣯⣿⢾⡽⣯⡿⣾⣻⢷⣯⣟⣯⣷⢿⣻⡽⣷⢯⣿⣻⢾⣟⡿⣾⣻⡽⣟⣾⢯⣟⣷⢿⡾⣽⢯⣿⣻⣽⡾⣯⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀
⢸⣿⣿⣿⣿⣿⡽⣯⣟⡷⣿⣳⣯⢿⣻⡾⣷⢯⣿⣿⣿⣿⣿⣿⡿⣽⣯⡷⣿⢯⣟⣯⡿⣽⣻⣯⢿⡾⣽⣳⡿⣽⢿⣽⢾⣻⣟⡷⣿⡽⣯⣿⢾⣽⣳⣯⢿⣯⣟⣯⣿⣳⢿⣻⡾⣟⣷⢿⣽⢿⣽⣻⣽⡾⣿⣽⣻⣯⡷⣟⡷⣿⣽⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀
⢸⣿⣿⣿⣿⣿⡽⣟⣾⢿⡽⣷⣻⢿⣽⣻⣽⣟⣿⣿⣿⣿⣿⣿⣟⣷⢯⣿⣽⣻⢯⣷⢿⣻⢷⣻⣯⣟⣿⣳⢿⣯⢿⣾⣻⣟⡾⣟⣷⢿⣻⢾⣯⣟⣷⣻⣟⣾⣽⣳⣯⣟⣿⣳⡿⣯⣟⡿⣾⢯⣷⣟⡷⣿⣳⣯⡷⣿⣽⣻⣽⡷⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀
⢸⣿⣿⣿⣿⣿⣽⣻⣽⣯⢿⣯⣟⣯⣷⣟⡷⣯⣿⣿⣿⣿⣿⣿⣻⢾⣟⡷⣯⣟⡿⣽⣻⢯⣿⣻⢾⣽⣾⣻⣟⣾⣟⡷⣟⣾⣟⣯⣟⣯⣿⣻⢾⣽⣾⣻⢾⣽⡾⣯⡷⣿⢾⣽⣻⢷⣻⣽⣯⢿⣳⣯⢿⣷⣻⢷⣻⡷⣯⣟⣾⣽⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀
⢸⣿⣿⣿⣿⣿⢾⣽⣳⣯⣿⢾⣽⣳⡿⣞⣿⣽⣻⣿⣿⣿⣿⣿⣟⡿⣾⣻⣽⢯⣿⣻⣽⣟⣷⣻⣯⡷⣯⣷⣻⢷⣯⢿⣻⢷⣯⣟⣾⣻⢾⡽⣟⣷⢯⣟⣯⣷⢿⣳⡿⣯⣟⡷⣿⣻⢯⣷⣻⢿⣽⡾⣟⣾⢯⡿⣯⣟⣷⢿⣽⡾⣽⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀
⢸⣿⣿⣿⣿⣿⢯⣟⡷⣟⣾⢿⣽⣳⣿⣻⢷⣯⣿⣿⣿⣿⣿⣿⣯⣟⣷⢿⣽⣻⢷⣯⡷⣿⣞⡿⣾⣽⢷⣻⣽⣟⣾⣟⣯⡿⣾⣽⣳⡿⣯⢿⣻⡾⣿⣽⣻⢾⣻⣽⣻⢷⣻⣟⡷⣿⢯⣷⢿⣻⣾⡽⣿⣽⣻⣽⣷⣻⡾⣟⣾⣽⣿⣿⣿⣿⡟⠀⠀⠀⠀⠀⠀
⢸⣿⣿⣿⣿⣿⣯⢿⣽⢿⣽⣻⡾⣟⣾⡽⣿⢾⣽⣿⣿⣿⣿⣿⣷⣻⡾⣿⡽⣯⣿⣞⣿⣳⡿⣽⡷⣯⣿⣻⢾⣽⡾⣽⣾⣻⢷⣯⢿⣽⣻⢿⣽⣻⢷⣯⣟⡿⣽⣳⣿⣻⣽⡾⣿⡽⣟⣾⢿⣽⣞⣿⣳⣯⣟⣾⣳⡿⣽⣻⣽⡿⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀
⠸⣿⣿⣿⣿⣿⡾⣿⣽⣻⡾⣯⣟⣯⣷⢿⣯⣟⣿⣿⣿⣿⣿⣿⣷⣻⣽⢷⣟⡿⣾⣽⢾⣯⢿⣽⣻⢷⣯⣟⣯⣷⢿⣻⡾⣽⣟⣾⣟⡷⣿⢯⣷⣟⡿⣾⣽⣻⢯⣟⣾⣽⣳⣿⣳⢿⣻⡽⣟⣾⣽⢾⣻⡾⣽⣳⡿⣽⣻⣽⡿⣽⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀
⠀⣿⣿⣿⣿⣿⣟⣷⢯⣷⢿⣯⣟⡷⣯⣿⢾⣽⣾⣿⣿⣿⣿⣿⡷⣯⣟⡿⣾⣻⢷⣯⡿⣾⣻⣽⢯⣿⢾⣽⣳⣯⣿⣳⣿⣻⢾⣳⣯⢿⣯⢿⡾⣽⣻⢷⣯⣟⡿⣽⣳⣯⣷⢯⣟⡿⣽⣻⢯⣟⣾⣟⡷⣿⣻⣽⣻⣽⣿⢯⣟⣿⣿⣿⣿⣿⠇⠀⠀⠀⠀⠀⠀
⠀⣿⣿⣿⣿⣿⣟⣾⢿⣽⣻⡾⣽⣻⣽⡾⣟⣷⢯⣿⣿⣿⣿⣿⡿⣽⡾⣟⣷⢿⣯⡷⣟⣯⡿⣾⣻⣽⣯⣟⡷⣟⣾⣽⣞⣯⡿⣯⣟⡿⣾⣻⣽⢿⣽⣻⡾⣽⣻⢯⣟⣾⣽⣻⡽⣟⣯⢿⣻⣽⡾⣯⣟⣷⣟⣷⣿⣻⡾⣟⣯⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀
⠀⢸⣿⣿⣿⣿⣿⣽⣻⡾⣯⣟⡿⣽⣳⣿⣻⢾⡿⣿⣿⣿⣿⣿⡿⣽⣻⣽⢯⣿⢾⣽⢿⣽⣻⢷⣟⣷⣻⢾⣟⡿⣽⣞⣯⣷⢿⣽⣾⣻⢷⡿⣽⣻⣞⣯⢿⣻⣽⣟⣯⣷⣻⡽⣟⣯⣿⣻⡽⣷⣻⣽⡾⣿⢾⣯⡷⣿⣽⣻⢷⣿⣿⣿⣿⡟⠀⠀⠀⠀⠀⠀⠀
⠀⢸⣿⣿⣿⣿⣿⣞⣷⢿⣯⢿⣽⢿⣽⣞⡿⣯⢿⣿⣿⣿⣿⣿⣿⣻⣽⡾⣿⣽⣻⡾⣟⣷⢿⣻⡾⣯⣟⡿⣾⣻⢯⣟⣷⣯⢿⣳⣯⣟⣯⡿⣯⣷⢿⣽⣻⣟⣾⣽⢾⣳⡿⣽⣟⡷⣯⣷⢿⣯⣟⡷⣟⣯⣿⢾⣽⡷⣯⣟⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀
⠀⠀⣿⣿⣿⣿⣿⣟⣾⣟⣾⢿⣽⣻⣾⣽⣻⣽⣟⣿⣿⣿⣿⣿⣿⣳⣯⢿⣳⣯⣷⢿⣻⡾⣿⣽⣻⢷⣻⣟⣷⢿⣻⣽⡾⣽⣻⣟⣾⡽⣷⢿⣽⣾⣻⡽⣷⢯⣷⣟⡿⣽⣻⣽⡾⣿⣽⢾⣟⣾⣽⣻⢯⣟⣾⣟⡷⣟⣯⡿⣾⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀
⠀⠀⢹⣿⣿⣿⣿⣿⢾⣽⡾⣟⣷⣟⡾⣷⣻⢷⣯⣿⣿⣿⣿⣿⣿⢷⣻⡿⣽⣳⣯⡿⣯⣟⣷⢯⣟⣿⣽⢾⣯⣟⣯⣷⢿⣻⢷⣯⢿⣽⢯⣿⣞⡷⣿⣽⣻⣯⣷⣻⢿⣽⢯⣷⢿⣳⣯⣿⢾⣻⣞⡿⣯⣟⣷⢯⣿⣻⢷⣟⣿⣿⣿⣿⣿⠁⠀⠀⠀⠀⠀⠀⠀
⠀⠀⢸⣿⣿⣿⣿⣿⣟⣾⣽⢿⡾⣽⣻⣽⢯⣿⣞⣿⣿⣿⣿⣿⣿⣟⣯⣿⣽⣻⣾⡽⣷⣻⣽⣟⡿⣾⡽⣟⣾⡽⣷⢯⣿⢯⣿⢾⡿⣽⣻⢷⣯⢿⡷⣯⣷⣟⣾⢯⣿⢾⡿⣽⣻⢯⣷⢯⣿⢯⡿⣽⣟⣾⢯⣿⣳⣿⣻⢾⣿⣿⣿⣿⡿⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⢻⣿⣿⣿⣿⣿⣾⣯⣿⡽⣿⡽⣯⣿⣳⢿⣾⣿⣿⣿⣿⣿⣟⣾⣳⣯⣷⢯⣿⣽⣻⡾⣽⣻⢷⣟⡿⣽⣻⣽⢿⣽⣻⡾⣿⣽⣻⣽⢿⣾⣻⣽⣷⣻⢾⣯⡿⣽⣯⣟⣯⣿⣻⡽⣿⣽⣻⣽⣟⣾⢯⣿⣳⢿⡾⣽⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠈⠻⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣯⣷⣟⡷⣯⣿⣳⣯⣷⢿⣻⣽⢿⣞⣿⢯⣟⣾⣟⡷⣿⡽⣷⣿⣿⣾⣿⣿⣿⣿⣿⣿⣿⣾⣿⣷⣿⣾⣿⣾⣿⣿⣿⣿⣿⣿⣟⣾⣟⡷⣿⢯⣟⡿⣾⣿⣿⣿⣿⠇⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠈⠛⠿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⢾⣽⣻⣽⡾⣯⣷⢯⣿⣻⢾⣯⢿⣾⣻⢯⣷⣻⣽⡷⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣻⢷⣯⣷⣻⣽⣯⢿⣯⣟⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠉⠉⠙⠋⠋⠉⠉⠉⠉⢹⣿⣿⣿⣿⣿⣯⡷⣟⣷⢿⣳⣯⣿⣳⡿⣯⣟⡿⣞⣯⣿⣽⣻⡾⣽⣿⣿⣿⣿⣿⡿⠿⠿⠿⠿⠿⢿⣿⣿⣿⣿⣿⣿⣻⢿⣽⣳⣯⣟⡿⣞⣷⣟⡷⣯⣿⢾⣽⣿⣿⣿⣿⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⣿⣿⣿⣿⣿⣷⣻⢿⣽⣻⢯⣷⢯⣷⣟⡿⣞⣿⣻⣽⢾⣳⡿⣽⣟⣾⣿⣿⣿⣿⠁⠀⠀⠀⠀⠀ ⢸⣿⣿⣿⣿⣿⡾⣽⣯⡷⣟⣷⣻⣽⣟⡷⣯⣿⣻⢾⣻⣽⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⢿⣿⣿⣿⣿⣷⣟⣯⣷⢿⣻⡽⣟⣷⣯⢿⣻⢷⣻⣽⣟⣯⢿⣻⡾⣿⣿⣿⣿⣿⠀⠀⠀⠀⠀⠀ ⠘⣿⣿⣿⣿⣿⡿⣽⣞⡿⣯⢿⣽⣞⣯⣿⣽⢾⣻⢿⡽⣿⣿⣿⣿⣿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⢸⣿⣿⣿⣿⣿⣞⡿⣞⡿⣯⣟⣿⢾⣽⣻⢯⣿⢯⣷⢯⣟⣿⣳⡿⣿⣿⣿⣿⡟⠀⠀⠀⠀⠀⠀⠀ ⣿⣿⣿⣿⣿⡿⣽⡾⣿⡽⣿⣞⣯⣷⣟⡾⣟⣯⣿⣻⣿⣿⣿⣿⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠘⣿⣿⣿⣿⣿⣯⣟⡿⣽⣯⣟⣾⢿⡽⣯⡿⣯⢿⡾⣟⡿⣾⣽⣻⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀ ⢹⣿⣿⣿⣿⣿⢯⣟⣷⢿⣳⣯⣟⣾⣽⣻⢯⣟⣾⣽⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⢿⣿⣿⣿⣿⣷⣻⢿⣽⣞⣯⣟⣯⡿⣷⣟⡿⣯⣟⡿⣽⡷⣯⢿⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀ ⢸⣿⣿⣿⣿⣿⢯⣿⢾⣻⣯⢷⡿⣽⣾⣻⢯⣿⣽⣾⣿⣿⣿⣿⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⢸⣿⣿⣿⣿⣿⡽⣟⣾⢯⣟⣾⢯⣟⣷⣻⣽⣟⣾⣟⣯⣿⡽⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀ ⢸⣿⣿⣿⣿⣿⡿⣽⣻⢷⣻⣯⢿⡷⣯⣟⣿⣳⣯⣿⣿⣿⣿⡟⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠘⣿⣿⣿⣿⣿⣟⣯⣿⢯⣿⣽⣻⣟⣾⢯⣷⣻⢷⣯⣷⣯⣿⣷⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀ ⠀ ⣿⣿⣿⣿⣿⣿⣽⣯⣿⣻⣾⣿⣽⣟⣾⣽⣷⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣿⣿⣿⣷⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡇⠀⠀⠀⠀⠀⠀⠀ ⠀ ⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠈⠛⠻⠿⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⠿⠟⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀ ⠸⠿⠿⠿⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠿⠿⠿⠟⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀ ⠀⠀⠀⠀⠀⠉⠉⠉⠉⠛⠛⠛⠛⠛⠛⠛⠛⠉⠉⠉⠉⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
*/
#include <bits/stdc++.h>
// #pragma GCC target ("avx2")
// #pragma GCC optimization ("O3")
// #pragma GCC optimization ("unroll-loops")
// M1nK's Ducky Mask: "Strongest Man In The World"
#define task "TASK"
#define el '\n'
#define fi first
#define se second
#define pi acos (-1)
#define pb push_back
#define ll long long
#define ld long double
#define pll pair <ll, ll>
#define ull unsigned ll
#define pll2 pair <ll, pll>
#define all(a) a.begin (), a.end ()
#define heap_max(a) priority_queue <a>
#define REP(i, n) for (ll i = 0, _n = (n); i < _n; i++)
#define REPD(i, n) for (ll _n = (n), i = _n - 1; i >= 0; i--)
#define FOR(i, a, b) for (ll i = (a), _b = (b); i <= _b; i++)
#define FOD(i, a, b) for (ll i = (a), _b = (b); i >= _b; i--)
#define heap_min(a) priority_queue <a, vector <a>, greater <a>>
#define FOr(i, a, b, c) for (ll i = (a), _b = (b); i <= _b; i += (c))
#define FOd(i, a, b, c) for (ll i = (a), _b = (b); i >= _b; i -= (c))
#define Mirai ios_base:: sync_with_stdio (0);
#define Kuriyama cin.tie (nullptr); cout.tie (nullptr);
using namespace std;
const ll INF = 1e18;
const int MOD = 1e9 + 7;
const int minN = 1e3 + 7;
const int maxN = 1e5 + 7;
const int LOG = __lg (maxN) + 1;
template <class X> ll Mask (X s) { return (1LL << s); }
template <class X> ll BitGet (X s, ll i) { return (s >> i) & 1LL; }
template <class X> ll BitCnt (X s) { return __builtin_popcountll (s); }
template <class X, class Y> bool maximize (X &a, Y b) { return (a < b) ? a = b, 1 : 0; }
template <class X, class Y> bool minimize (X &a, Y b) { return (a > b) ? a = b, 1 : 0; }
// --------------- M1nK_08 --------------- //
ll n, u, v, root, q;
ll ans[maxN];
vector <ll> adj[maxN];
// Segment Tree + Lazy
ll st[maxN << 2], lz[maxN << 2];
void Build (ll id = 1, ll l = 1, ll r = n) {
if (l == r) {
st[id] = 1;
return;
}
ll mid = (l + r) >> 1;
Build (id << 1, l, mid);
Build (id << 1 | 1, mid + 1, r);
}
void Down (ll id) {
lz[id << 1] = (lz[id << 1] + lz[id]) % MOD;
st[id << 1] = (st[id << 1] + lz[id]) % MOD;
lz[id << 1 | 1] = (lz[id << 1 | 1] + lz[id]) % MOD;
st[id << 1 | 1] = (st[id << 1 | 1] + lz[id]) % MOD;
lz[id] = 0;
}
void Upd (ll u, ll v, ll val, ll id = 1, ll l = 1, ll r = n) {
if (r < u || v < l) return;
if (u <= l && r <= v) {
lz[id] = (lz[id] + val) % MOD;
st[id] = (st[id] + val) % MOD;
return;
}
Down (id);
ll mid = (l + r) >> 1;
Upd (u, v, val, id << 1, l, mid);
Upd (u, v, val, id << 1 | 1, mid + 1, r);
st[id] = max (st[id << 1], st[id << 1 | 1]);
}
ll Get (ll pos, ll id = 1, ll l = 1, ll r = n) {
if (r < pos || pos < l) return 0;
if (l == pos && r == pos) return st[id];
Down (id);
ll mid = (l + r) >> 1;
return max (
Get (pos, id << 1, l, mid),
Get (pos, id << 1 | 1, mid + 1, r)
);
}
// DFS / HLD / UpdPath
ll sz[maxN], par[maxN], h[maxN], hv[maxN];
void DFS (ll u, ll p) {
sz[u] = 1;
for (auto v: adj[u]) {
if (v == p) continue;
par[v] = u;
h[v] = h[u] + 1;
DFS (v, u);
sz[u] += sz[v];
if (sz[v] > sz[hv[u]]) hv[u] = v;
}
}
ll curpos;
ll ID[maxN], pos[maxN];
void HLD (ll u, ll p) {
ID[u] = p;
pos[u] = ++curpos;
if (!!hv[u]) HLD (hv[u], p);
for (auto v: adj[u]) if (v != par[u] && v != hv[u]) HLD (v, v);
}
void UpdPath (ll u, ll v, ll x) {
while (ID[u] != ID[v]) {
if (h[ID[u]] < h[ID[v]]) swap (u, v);
Upd (pos[ID[u]], pos[u], x);
u = par[ID[u]];
}
Upd (min (pos[u], pos[v]), max (pos[u], pos[v]), x);
}
void INIT () {
cin >> n;
FOR (u, 1, n) {
cin >> v;
if (!v) root = u;
else {
adj[u].pb (v);
adj[v].pb (u);
}
}
}
void Solve () {
INIT ();
DFS (root, -1);
HLD (root, root);
Build ();
FOR (i, 1, n) {
cin >> u;
ans[u] = Get (pos[u]);
if (par[u]) UpdPath (root, par[u], ans[u]);
}
FOR (i, 1, n) cout << ans[i] % MOD << ' ';
}
signed main (void) {
Mirai Kuriyama;
if (fopen (task".INP", "r")) {
freopen (task".INP", "r", stdin);
freopen (task".OUT", "w", stdout);
}
int t = 1;
// cin >> t;
while (t--) Solve ();
return 0;
}