from typing import Callable
from typing import Any
from typing import Sequence
from typing import Tuple
from typing import Optional


def _find_last(condition: Callable[[Any], bool], sequence: Sequence) -> Tuple[Optional[int], Any]:
    """条件に合う要素をシーケンスの末尾から順に探す。

    複数存在する場合、もっとも index が大きいものが返される。

    Args:
        condition: 条件
        sequence: 要素を探すシーケンス

    Returns:
        要素が見つかればその index と 要素。見つからなければ None と None。
    """
    target_list = tuple(sequence)
    for i in reversed(range(len(target_list))):
        if condition(target_list[i]):
            return i, target_list[i]

    return None, None