write a go solution for Description: You are given three integers n, k, m and m conditions (l_1,r_1,x_1),(l_2,r_2,x_2),...,(l_m,r_m,x_m). Calculate the number of distinct arrays a, consisting of n integers such that: - 0<=a_i<2^k for each 1<=i<=n; - bitwise AND of numbers a[l_i]&a[l_i+1]&...&a[r_i]=x_i for each 1<=i<=m. Two arrays a and b are considered different if there exists such a position i that a_ineqb_i. The number can be pretty large so print it modulo 998244353. Input Format: The first line contains three integers n, k and m (1<=n<=5*10^5, 1<=k<=30, 0<=m<=5*10^5) — the length of the array a, the value such that all numbers in a should be smaller than 2^k and the number of conditions, respectively. Each of the next m lines contains the description of a condition l_i, r_i and x_i (1<=l_i<=r_i<=n, 0<=x_i<2^k) — the borders of the condition segment and the required bitwise AND value on it. Output Format: Print a single integer — the number of distinct arrays a that satisfy all the above conditions modulo 998244353. Note: You can recall what is a bitwise AND operation here. In the first example, the answer is the following arrays: [3,3,7,6], [3,7,7,6] and [7,3,7,6].. Output only the code with no comments, explanation, or additional text.