← Home
write a go solution for Description:
You have an array a consisting of n positive integers and you have to handle q queries of the following types:

- 1 i x: change a_i to x,
- 2 l r k: check if the number of occurrences of every positive integer in the subarray a_l,a_l+1,ldotsa_r is a multiple of k (check the example for better understanding).

Input Format:
The first line of the input contains two integers n and q (1<=n,q<=3*10^5), the length of a and the number of queries.

Next line contains n integers a_1,a_2,ldotsa_n (1<=a_i<=10^9) — the elements of a.

Each of the next q lines describes a query. It has one of the following forms.

- 1 i x, (1<=i<=n , 1<=x<=10^9), or
- 2 l r k, (1<=l<=r<=n , 1<=k<=n).

Output Format:
For each query of the second type, if answer of the query is yes, print "YES", otherwise print "NO".

Note:
In the first query, requested subarray is [1234,2,3,3,2,1], and it's obvious that the number of occurrence of 1 isn't divisible by k=2. So the answer is "NO".

In the third query, requested subarray is [1,2,3,3,2,1], and it can be seen that the number of occurrence of every integer in this sub array is divisible by k=2. So the answer is "YES".

In the sixth query, requested subarray is [1,2,3,3,2,1,1,2,3], and it can be seen that the number of occurrence of every integer in this sub array is divisible by k=3. So the answer is "YES".. Output only the code with no comments, explanation, or additional text.