def main(): import sys input = sys.stdin.read().split() ptr = 0 N = int(input[ptr]) ptr += 1 Q = int(input[ptr]) ptr += 1 P = int(input[ptr]) ptr += 1 A = list(map(int, input[ptr:ptr + N])) ptr += N output = [] for _ in range(Q): L = int(input[ptr]) ptr += 1 R = int(input[ptr]) ptr += 1 K = int(input[ptr]) ptr += 1 if K == 0: has_zero = False for i in range(L-1, R): if A[i] == 0: has_zero = True break if has_zero: output.append("Yes") continue current_bits = 0 found = False for i in range(L-1, R): a = A[i] if a == 0: continue temp = current_bits new_bits = 0 for r in range(P): if (temp >> r) & 1: new_r = (r * a) % P new_bits |= 1 << new_r new_bits |= 1 << a current_bits |= new_bits if (current_bits >> 0) & 1: found = True break if found or (current_bits & 1): output.append("Yes") else: output.append("No") else: current_bits = 0 found = False for i in range(L-1, R): a = A[i] if a == 0: continue if a == K: found = True break temp = current_bits new_bits = 0 for r in range(P): if (temp >> r) & 1: new_r = (r * a) % P new_bits |= 1 << new_r new_bits |= 1 << a current_bits |= new_bits if (current_bits >> K) & 1: found = True break if found: output.append("Yes") else: output.append("No") print('\n'.join(output)) if __name__ == '__main__': main()