def is_overlap(task: SwapTask, target: SwapTask):
    return ((task != target) and ((target.start_time < task.end_time < target.end_time) or (target.start_time < task.start_time < target.end_time) or (task.start_time < target.end_time < task.end_time) or (task.start_time < target.start_time < task.end_time)))
def is_overlap(task: SwapTask, target: SwapTask):
    return ((task != target) and ((target.start_time < task.end_time < target.end_time) or (target.start_time < task.start_time < target.end_time) or (task.start_time < target.end_time < task.end_time) or (task.start_time < target.start_time < task.end_time)))