Hypercube High
An N-dimensional hypercube (or N-cube) with side length a > 0 is a geometric figure in N-dimensional Euclidean space, constructed as follows: Begin by selecting any (N-1)-dimensional hyperplane within this space. Construct an (N-1)-cube within this hyperplane. From each vertex of this cube, extend a segment of length a perpendicular to the hyperplane in the same direction. The endpoints of these segments will also lie in an (N-1)-dimensional plane, parallel to the original, forming another (N-1)-cube. The convex hull of all these vertices, both from the original and the new (N-1)-cube, forms an N-dimensional hypercube. By definition, a 0-cube is simply a point, which is its sole vertex. It is straightforward to see that a 1-cube is a line segment, a 2-cube is a square, and a 3-cube is the familiar three-dimensional cube. While hypercubes of higher dimensions are more challenging to visualize, they can be constructed formally using this definition.
A k-dimensional face (or k-face) of an N-dimensional hypercube is defined as an intersection with a k-dimensional hyperplane that does not contain interior points of higher-dimensional faces. Each N-cube has one k-face that coincides with itself. It can be proven that k-faces are k-cubes. 0-faces are the vertices of the N-cube, 1-faces are its edges, and so forth.
Your task is to calculate the number of k-dimensional faces of an N-dimensional hypercube.
Input
The input consists of a single line containing three integers: N, k, and p (0 ≤ k ≤ N ≤ 10^18, k ≤ 2000, 1 ≤ p ≤ 10^18).
Output
Output a single line with k+1 numbers: the remainder when divided by p of the number of 0-faces, 1-faces, ..., k-faces of the N-cube.