Classic Range Query 2


Submit solution

Points: 100
Time limit: 2.0s
Memory limit: 256M

Author:
Problem type
Allowed languages
C, C++

You are given a sequence \(a_1, a_2, \ldots, a_N\) of length \(N\) and \(Q\) queries. Each query has three parameters \(L, R, x\); for that query, report how many values equal to \(x\) appear among the \(R - L + 1\) elements from \(a_L\) through \(a_R\).

Input

The first line contains two integers \(N\) and \(Q\) (\(1 \le N, Q \le 5 \times 10^5\)).

The second line contains \(N\) integers \(a_1, a_2, \ldots, a_N\) (\(1 \le a_i \le 5 \times 10^5\)).

Each of the next \(Q\) lines contains three integers \(L\), \(R\), and \(x\), describing a query.

Output

For each query, output a line with a single integer representing the answer.

Sample Input 1

5 6
1 2 3 1 1
1 5 1
1 3 1
2 4 3
3 5 1
1 5 4
1 5 3

Sample Output 1

3
1
1
2
0
1