lowerCAmelCase      :				Optional[int]     			={0: [1, 2], 1: [0, 3], 2: [0], 3: [1], 4: [5, 6], 5: [4, 6], 6: [4, 5]}

lowerCAmelCase      :				List[str]     			={0: [1, 2, 3], 1: [0, 3], 2: [0], 3: [0, 1], 4: [], 5: []}







def     A__	(       __A ,			__A ,			__A						):







    '''simple docstring'''
    _lowerCamelCase  :		List[Any]			    =    True
    _lowerCamelCase  :		str			    =    []

    for neighbour in graph[vert]:
        if not visited[neighbour]:
            connected_verts += dfs(__A ,			__A ,			__A						)

    return [vert, *connected_verts]







def     A__	(       __A						):







    '''simple docstring'''
    _lowerCamelCase  :		int			    =    len(__A						)
    _lowerCamelCase  :		Any			    =    graph_size * [False]
    _lowerCamelCase  :		str			    =    []

    for i in range(__A						):
        if not visited[i]:
            _lowerCamelCase  :		Tuple			    =    dfs(__A ,			__A ,			__A						)
            components_list.append(__A						)

    return components_list


if __name__ == "__main__":
    import doctest

    doctest.testmod()





from __future__ import annotations

import sys







def     A__	(       __A						):







    '''simple docstring'''
    if n < 0:
        raise ValueError("""Negative arguments are not supported"""						)
    return _fib(__A						)[0]







def     A__	(       __A						):







    '''simple docstring'''
    if n == 0:  # (F(0), F(1))
        return (0, 1)

    # F(2n) = F(n)[2F(n+1) − F(n)]
    # F(2n+1) = F(n+1)^2+F(n)^2
    _lowerCamelCase    ,				_lowerCamelCase  :		List[Any]			    =    _fib(n // 2						)
    _lowerCamelCase  :		List[Any]			    =    a * (b * 2 - a)
    _lowerCamelCase  :		Optional[int]			    =    a * a + b * b
    return (d, c + d) if n % 2 else (c, d)


if __name__ == "__main__":
    lowerCAmelCase      :				Union[str, Any]     			=int(sys.argv[1])
    print(F"""fibonacci({n}) is {fibonacci(n)}""")




