[GXOI / GZOI2019]旧词
题号:NC50750
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 32 M,其他语言64 M
64bit IO Format: %lld

题目描述

浮生有梦三千场
穷尽千里诗酒荒
徒把理想倾倒
不如早还乡

温一壶风尘的酒
独饮往事迢迢
举杯轻思量
泪如潮青丝留他方
——乌糟兽/愚青《旧词》
你已经解决了五个问题,不妨在这大树之下,吟唱旧词一首抒怀。最后的问题就是关于这棵树的,它的描述很简单。
给定一棵n个点的有根树,节点标号,1号节点为根。
给定常数k。
给定Q个询问,每次询问给定x,y。
求:

表示节点x与节点y在有根树上的最近公共祖先。
表示节点x的深度,根节点的深度为1。
由于答案可能很大,你只需要输出答案模998244353的结果。

输入描述:

输入包含n+Q行。
第1行,三个正整数n,Q,k。
行,每行有一个正整数,表示编号为i的节点的父亲节点的编号。
接下来Q行,每行两个正整数,表示一次询问。

输出描述:

输出包含Q行,每行一个整数,表示答案模998244353的结果。
示例1

输入

复制
5 5 2
1
4
1
2
4 3
5 4
2 5
1 2
3 2

输出

复制
15
11
5
1
6

说明

输入的树:
oldword.png每个点的深度分别为1,2,3,2,3。
第一个询问x=4,y=3,容易求出:
\text{lca}(1,3)=1 \\ \text{lca}(2,3)=1 \\ \text{lca}(3,3)=3 \\ \text{lca}(4,3)=4
于是\text{depth}(1)^2+ \text{depth}(1)^2+ \text{depth}(3)^2+ \text{depth}(4)^2=1+1+9+4=15

备注: