Mathematical Practice
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 128 M,其他语言256 M
64bit IO Format: %lld

题目描述

Kamishirasawa Keine always says, "If you don't know what to do, why not give mathematical practice a try."

However, Cirno is way too much talented to work on simple problems. Therefore, you are now tasked to crack one.

We consider one operation on a set as selecting m subsets of S in order (You can select the same subset multiple times and the selected subset can be empty).

Now you need to figure out how many possible operations that the m selected subsets are pairwise disjoint.

As the answer may get very large, you need to print the answer after modulo 998244353.

输入描述:

The input contains one line with two integers n and m (1≤n,m≤109), where n is the size of set S and m is the number of subsets to be selected in one operation.

输出描述:

Printone integer, the number of possible operations above after modulo 998244353.
示例1

输入

复制
3 2

输出

复制
27
示例2

输入

复制
1000 25

输出

复制
605425003