Tree Depth

Time limit2sMemory limit512 MB

Summary
For each node i, sum its depth over all permutations of 1..N with exactly K inversions, using the Cartesian-tree BST built by recursively taking the minimum. Output each sum mod a large prime.
Level

Hard9 of 10

Topics
Dynamic programming, Combinatorics, Divide and conquer, Math
Solved
No attempts yet

Problem

For the new year, Farmer John decided to give his cows a festive binary search tree (BST)!

To generate the BST, FJ starts with a permutation a={a1,a2,…,aN}a=\{a_1,a_2,\ldots,a_N\} of the integers 1…N1\ldots N, where N≤300N\le 300. He then runs the following pseudocode with arguments 11 and NN.

generate(l,r):
  if l > r, return empty subtree;
  x = argmin_{l <= i <= r} a_i; // index of min a_i in {a_l,...,a_r}
  return a BST with x as the root, 
    generate(l,x-1) as the left subtree,
    generate(x+1,r) as the right subtree;

For example, the permutation {3,2,5,1,4}\{3,2,5,1,4\} generates the following BST:

    4
   / \
  2   5
 / \ 
1   3

Let di(a)d_i(a) denote the depth of node ii in the tree corresponding to aa, meaning the number of nodes on the path from aia_i to the root. In the above example, d4(a)=1,d2(a)=d5(a)=2d_4(a)=1, d_2(a)=d_5(a)=2, and d1(a)=d3(a)=3d_1(a)=d_3(a)=3.

The number of inversions of aa is equal to the number of pairs of integers (i,j)(i,j) such that 1≤i<j≤N1\le i<j\le N and ai>aja_i>a_j. The cows know that the aa that FJ will use to generate the BST has exactly KK inversions (0≤K≤N(N−1)2)(0\le K\le \frac{N(N-1)}{2}). Over all aa satisfying this condition, compute the remainder when ∑adi(a)\sum_a d_i(a) is divided by MM for each 1≤i≤N1\le i\le N.

Input

The only line of input consists of three space-separated integers N,KN, K, and MM, followed by a new line. MM will be a prime number in the range [108,109+9][10^8,10^9+9].

Output

Print NN space-separated integers denoting ∑adi(a)(modM)\sum_a d_i(a)\pmod{M} for each 1≤i≤N1\le i\le N.

Examples2

  1. Example 1

    Input
    3 0 192603497
    
    Expected output
    1 2 3
    
  2. Example 2

    Input
    3 1 144408983
    
    Expected output
    3 4 4