← Home
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.