Digits of Unity

아직 제출이 없습니다시간 제한5초메모리 제한1024 MB

문제

At the beginning of the school year, the students in the International College of Paper Cutters (ICPC) choose their student IDs. The students can choose any positive integer less than or equal to some maximum number for their IDs, but no two students can choose the same student ID.

After some deliberation among the ranks, the students decided they wanted to find some common ground between all their IDs. In particular, they want to choose their IDs such that the bitwise AND of all of their student IDs has at least some minimum number of 11-bits. The students of the ICPC are asking you to write a program to compute the number of ways to do this. Two assignments are different if there is at least one student that has a different student ID in each assignment.

The bitwise AND of two integers aa and bb is an integer cc whose binary representation is as follows: the iith bit of cc is 11 if and only if the iith bits of both aa and bb are 11. C, C++, Java, and Python all support computing the bitwise AND of two integers using the \& operator.

This definition generalizes to sets of numbers. The bitwise AND of a set of integers SS is an integer cc whose binary representation is as follows: the iith bit of cc is 11 if and only if the iith bit of each element of SS is 11.

입력

The single line of input contains three integers nn (1n5×1051\leq n \leq 5 \times 10^5), kk (1k5×1051 \leq k \leq 5 \times 10^5), and mm (nm5×106n \leq m \leq 5 \times 10^6), where nn is the number of students, kk is the required minimum number of common bits, and mm is the maximum number any student ID could be.

출력

Output a single integer, which is the number of ways to choose nn distinct student IDs from the range \[1,m]\[1, m] such that the number of 11-bits in the bitwise AND of the student IDs has at least kk 11-bits. Since the answer may be large, output it modulo 998,244,353998\\,244\\,353.