def euclides_estendido(a, b, printa=False):
    dividendo = abs(a)
    if a > 0:
        x_dividendo = 1
    else:
        x_dividendo = -1
    y_dividendo = 0
    
    divisor = abs(b)
    x_divisor = 0
    if b > 0:
        y_divisor = 1
    else:
        y_divisor = -1

    if b == 0:
        return dividendo, x_dividendo, y_dividendo

    while True:
        quociente, resto = divmod(dividendo, divisor)
        x_resto = x_dividendo - x_divisor*quociente
        y_resto = y_dividendo - y_divisor*quociente
        if printa:
            print(f'{dividendo = }, {divisor = }, {resto = }, {x_divisor = }, {y_divisor = }')

        if resto == 0:
            return divisor, x_divisor, y_divisor
        # else implícito
        dividendo, divisor = divisor, resto
        x_dividendo, y_dividendo = x_divisor, y_divisor
        x_divisor, y_divisor = x_resto, y_resto
