####### Modules ##########



####### Algo #############


### Exo
def b2dec(N:str, b:int) -> int :
    n=0
    p=len(N)
    for k in range(p) :
        n = n + int(N[k])*b**(p-k-1)
    return(n)

### Exo
def dec2b(N:int, b:int) -> str :
    code=""
    n=N
    while n>0 :
        code = str(n%b) + " " + code
        n = n//b
    return(code)

### Exo
def ascii2txt(cascii:str) -> str :
    txt = ""
    for k in range(len(cascii)//2) :
        txt = txt + chr(int(cascii[2*k:2*k+2],16))
    return(txt)

# TD 
def representant3(n: int) -> list:
    if n==0: return []
    sgn = 1 if n >= 0 else -1   # vaut 1 si n>=0, -1 sinon
    p = ceil( log3(sgn*n) )
    if sgn*n < (3**p+1)/2: p-= 1
    tab = []
    while p >= 0:
        N = 3**p
        if abs(sgn*N-n) <= (N-1)/2:
            tab += [sgn]
            n -= sgn*N
        else:
            tab += [0]
        p -= 1
        sgn = 1 if n >= 0 else -1
    return tab


def miniOcc(tab:list) -> tuple :
    C = float("inf")
    val = float("inf")
    for k in range(len(tab)) :
        c = 0
        for j in range(len(tab)) :
            if tab[j] == tab[k] :
                c += 1
        if c < C :
            C = c
            val = tab[k]
    return((val,C))