from copy import deepcopy
from typing import Iterator, Optional


def selection_sort[T](xs: Iterator[T]) -> Iterator[T]:
    length = len(xs)
    xss = deepcopy(xs)
    for i in range(length):
        min_i = i
        for j in range(i + 1, length):
            if xss[j] < xss[min_i]:
                min_i = j
        xss[i], xss[min_i] = xss[min_i], xss[i]
    return xss

def binary_search[T](xs: list[T], value: T) -> Optional[int]:
    left = 0
    right = len(xs) - 1
    while left <= right:
        middle = (left + right) // 2
        if xs[middle] < value:
            left = middle + 1
        elif xs[middle] > value:
            right = middle - 1
        else:
            return middle
    return None