Binary String Sets
题号:NC306167
时间限制:C/C++/Rust/Pascal 6秒,其他语言12秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
64bit IO Format: %lld

题目描述

给定 n,k

定义合法的 01 串为由 n0 或者 1 组成、且不是全 0 的字符串。一共有 C=2^{n}-1 个合法的 01 串。

对于合法的 01 串组成的非空集合(共 2^C-1 个),
- 定义它的权值为其中所有串的 1 数量之和的 k 次方;
- 定义它是好的,当且仅当对于每个 i,集合中第 i 位为 1 的串个数均为偶数。

求所有好的集合的权值之和对 998244353 取模的结果。

输入描述:

共一行,两个整数,表示 n,k

输出描述:

一行,一个数,表示答案。
示例1

输入

复制
3 1

输出

复制
96

说明

好的集合:

- \{001,010,011\}, 权值为 4
- \{001,100,101\}, 权值为 4
- \{010,100,011,101\}, 权值为 6
- \{010,100,110\}, 权值为 4
- \{001,100,011,110\}, 权值为 6
- \{001,010,101,110\}, 权值为 6
- \{011,101,110\}, 权值为 6
- \{001,010,100,111\}, 权值为 6
- \{100,011,111\}, 权值为 6
- \{010,101,111\}, 权值为 6
- \{001,011,101,111\}, 权值为 8
- \{001,110,111\}, 权值为 6
- \{010,011,110,111\}, 权值为 8
- \{100,101,110,111\}, 权值为 8
- \{001,010,100,011,101,110,111\}, 权值为 12
示例2

输入

复制
20 55

输出

复制
690582902
示例3

输入

复制
11 4514

输出

复制
663804396

备注:

1\le n\le 10^{18}, 1\le k \le 50000