## https://yukicoder.me/problems/no/2758 import math def main(): N, Q = map(int, input().split()) A = list(map(int ,input().split())) lrk = [] for _ in range(Q): l, r, k = map(int, input().split()) lrk.append((l - 1, r - 1, k)) max_a = max(A) sqrt_a = int(math.sqrt(max_a)) small_k_divisual_list = [] for i in range(N): a = A[i] x_set = set() for k in range(1, sqrt_a + 1): if a % k == 0: x_set.add(k) small_k_divisual_list.append(x_set) # Mo's Algorithmで対応していく sqrt_n = int(math.sqrt(N)) array = [] for i in range(Q): l, r, k = lrk[i] l_index = l // sqrt_n array.append((l_index, r, l, k, i)) array.sort(key=lambda x : x[0] * (2 * N) - x[1] ) small_k_map = [0] * (sqrt_a + 1) large_k_map = [0] * (max_a + 1) for i in range(N): a = A[i] for k in small_k_divisual_list[i]: small_k_map[k] += 1 large_k_map[a] += 1 answers = [0] * Q left = 0 right = N - 1 def add(i, A): a = A[i] large_k_map[a] += 1 for k in small_k_divisual_list[i]: small_k_map[k] += 1 def delete(i, A): a = A[i] large_k_map[a] -= 1 for k in small_k_divisual_list[i]: small_k_map[k] -= 1 for _, r, l, k, index in array: while left < l: delete(left, A) left += 1 while l < left: left -= 1 add(left, A) while r < right: delete(right, A) right -= 1 while r > right: right += 1 add(right, A) if k <= sqrt_a: answers[index] = small_k_map[k] else: x = k while x <= max_a: answers[index] += large_k_map[x] x += k for i in range(Q): print(answers[i]) if __name__ == "__main__": main()