n, xLB, xRB = map(int, input().split()) enemies = [] for _ in range(n): XL, YU, XR, YD = map(int, input().split()) enemies.append((XL, YU, XR, YD)) # Initialize blocking_yd for each x in the beam's range beam_length = xRB - xLB + 1 blocking_yd = [-1] * beam_length # -1 indicates no enemy has covered this x yet for enemy in enemies: XL, YU, XR, YD = enemy # Calculate overlap with beam's x range overlap_start = max(xLB, XL) overlap_end = min(xRB, XR) if overlap_start > overlap_end: continue # no overlap # Update blocking_yd for each x in the overlap for x in range(overlap_start, overlap_end + 1): idx = x - xLB if YD > blocking_yd[idx]: blocking_yd[idx] = YD # Determine hit status for each enemy results = [] for enemy in enemies: XL, YU, XR, YD = enemy overlap_start = max(xLB, XL) overlap_end = min(xRB, XR) if overlap_start > overlap_end: results.append(0) continue hit = False for x in range(overlap_start, overlap_end + 1): idx = x - xLB if blocking_yd[idx] == YD: hit = True break results.append(1 if hit else 0) # Output the results for res in results: print(res)