#agc052f. [agc052_f]Tree Vertices XOR

[agc052_f]Tree Vertices XOR

问题描述

给定一个包含 NN 个顶点的树。顶点从 11NN 编号,第 ii 条边连接顶点 uiu_iviv_i

最初,树上的每个顶点上都写着数字 11

在一次操作中,你可以进行如下操作:

  • 选择树中的任意顶点 vv。设 XXvv 的邻居顶点上书写的值的异或(XOR),如果 vv 上书写的数字是 ava_v,则将其替换为 (av mathrmXOR X)(a_v\ \\mathrm{XOR}\ X)

你可以进行任意次数(也可能是零次)的操作。你可以得到多少种配置?由于这个数量可能很大,输出结果要对 998244353998244353 取模。

如果存在一个顶点 vv,它在这些配置中的书写数字不同,则称这两个配置是不同的。

约束条件

  • 3N21053 \le N \le 2 \cdot 10^5
  • 1ui,viN1 \le u_i, v_i \le N
  • uiviu_i \neq v_i
  • 输入表示一个有效的树。

输入

从标准输入读入数据,格式如下:

NN u1u_1 v1v_1 u2u_2 v2v_2 \vdots uN1u_{N-1} vN1v_{N-1}

输出

输出从初始状态可以得到的配置数,对 998244353998244353 取模。

示例输入 1

4
1 2
2 3
3 4

示例输出 1

10

我们可以得到以下配置(abcdabcd 表示顶点 1,2,3,41, 2, 3, 4 的书写数字分别为 a,b,c,da, b, c, d):11111111111011101100110010001000011101110110011001000100001100110010001000010001

示例输入 2

5
1 2
1 3
1 4
1 5

示例输出 2

24

示例输入 3

6
1 3
2 3
3 4
4 5
4 6

示例输出 3

40

示例输入 4

9
1 2
2 3
1 4
4 5
1 6
6 7
7 8
8 9

示例输出 4

255