from itertools import accumulate N, Q = map(int, input().split()) A = list(map(int, input().split())) count = [0] * N for a in A: count[a - 1] += 1 one = [0] * N two = [0] * N for i in range(N): if count[i] >= 1: one[i] = 1 if count[i] >= 2: twe[i] = 1 acc_one = [0, *accumulate(one)] acc_two = [0, *accumulate(two)] for _ in range(Q): l, r, L, R = map(int, input().split()) if acc_one[r] - acc_one[l - 1] < r - l + 1: print("No") continue if acc_one[R] - acc_one[L - 1] < R - L + 1: print("No") continue i, j = max(l, L), min(r, R) if i < j and acc_two[j] - acc_two[i - 1] < j - i + 1: print("No") continue print("Yes")