import sys def main(): input = sys.stdin.read().split() idx = 0 N = int(input[idx]); idx += 1 Q = int(input[idx]); idx += 1 P = int(input[idx]); idx += 1 A = list(map(int, input[idx:idx+N])) idx += N # Precompute multiplication table mult_table = [[0] * P for _ in range(P)] for a in range(P): for s in range(P): mult_table[a][s] = (s * a) % P output = [] for _ in range(Q): L = int(input[idx]) - 1; idx += 1 # Convert to 0-based index R = int(input[idx]) - 1; idx += 1 K = int(input[idx]); idx += 1 # Slice the subarray sub_A = A[L:R+1] mask = 0 for a in sub_A: new_part = 0 temp = mask while temp: lsb = temp & -temp s = (lsb).bit_length() - 1 new_part |= 1 << mult_table[a][s] temp ^= lsb mask = (mask | new_part) | (1 << a) if mask & (1 << K): output.append("Yes") else: output.append("No") print('\n'.join(output)) if __name__ == "__main__": main()