write a go solution for Description: An integer array a of length n is said to be a PalindORme if (a_1 | a_2 | ldots | a_i)=(a_n-i+1 | ldots | a_n-1 | a_n) for all 1<=i<=n, where | denotes the bitwise OR operation. An integer array a of length n is considered to be good if its elements can be rearranged to form a PalindORme. Formally, array a is good if there exists a permutation p_1,p_2,ldotsp_n (an array where each integer from 1 to n appears exactly once) for which a_p_1,a_p_2,ldotsa_p_n is a PalindORme. Find the number of good arrays of length n, consisting only of integers in the range [0,2^k-1], and print it modulo some prime m. Two arrays a_1,a_2,ldots,a_n and b_1,b_2,ldots,b_n are considered to be different if there exists any i (1<=i<=n) such that a_ineb_i. Input Format: The first and only line of the input contains three integers n, k and m (1<=n,k<=80, 10^8ltmlt10^9). It is guaranteed that m is prime. Output Format: Print a single integer — the number of good arrays modulo m. Note: In the first sample, both the possible arrays [0] and [1] are good. In the second sample, some examples of good arrays are: - [2,1,2] because it is already PalindORme. - [1,1,0] because it can rearranged to [1,0,1] which is PalindORme Note that [1,1,0], [1,0,1] and [0,1,1] are all good arrays and are considered to be different according to the definition in the statement. In the third sample, an example of a good array is [1,0,1,4,2,5,4]. It can be rearranged to an array b=[1,5,0,2,4,4,1] which is a PalindORme because: - mathrmOR(1,1) = mathrmOR(7,7) = 1 - mathrmOR(1,2) = mathrmOR(6,7) = 5 - mathrmOR(1,3) = mathrmOR(5,7) = 5 - mathrmOR(1,4) = mathrmOR(4,7) = 7 - mathrmOR(1,5) = mathrmOR(3,7) = 7 - mathrmOR(1,6) = mathrmOR(2,7) = 7 - mathrmOR(1,7) = mathrmOR(1,7) = 7 Here mathrmOR(l,r) denotes b_l | b_l+1 | ldots | b_r. Output only the code with no comments, explanation, or additional text.