import math


def fermat_factors(N: int) -> tuple:
    """
    Gets the factors of a odd number 'N' using Fermat's factorization
    method.

    :param N: Odd number to be factorized
    :returns: A tuple containing the 2 Fermat factors
    """

    # Does a check to see if the input was odd
    if N % 2 == 0:
        # Raising/Trowing an exeption (error) to make sure nothing
        # happens that will break something bigger and make the error
        # Easily traceable
        raise SyntaxError("N should be odd")

    # When using functions from a module, always write as
    # 'module.function()' [Exept when using a 'for' import clause]
    a = math.ceil(math.sqrt(N))
    b2 = a**2 - N

    while math.sqrt(b2) % 1 != 0:
        a = a + 1
        b2 = a**2 - N

    # We are returning a tuple containing the 2 factors we got
    # Tuples are a colletion data type
    # more on tuples: https://docs.python.org/3/library/stdtypes.html#tuples
    # Tuples are stored like (1, 2)
    return (int(a - math.sqrt(b2)), int(a + math.sqrt(b2)))