def select_intervals(intervals):
    if any(start >= end for start, end in intervals):
        raise ValueError('intervals must satisfy start < end')
    ordered = sorted(intervals, key=lambda item: (item[1], item[0]))
    chosen = []
    last_end = None
    for start, end in ordered:
        if last_end is None or start >= last_end:
            chosen.append((start, end))
            last_end = end
    return chosen


if __name__ == '__main__':
    print(select_intervals([(0, 5), (0, 2), (2, 4), (4, 6)]))
