## Primalité d'un entier

def is_prime(n):
    if n == 2:
        return True
    elif n == 1 or n%2 == 0:
        return False
    else:
        # On teste les éventuels diviseurs impairs de n à partir de 3 et valant
        # au plus la racine carrée de n.
        for i in range(3,int(n**0.5)+1,2):
            if n%i == 0:
                return False
        return True

# =================== #
# PROGRAMME PRINCIPAL #
# =================== #

N = int(input('Veuillez saisir l\'entier N : '))

if N == 0 :
    print(0)
elif N == 1:
    print(1)
else:
    L = []
    b_max = int(N**0.25)
    for b in range(1,b_max+1):
        a_max = int((N - b**4)**0.5)
        for a in range(1,a_max+1):
            new = a**2 + b**4
            if is_prime(new):
                L.append((new,a,b))
    L.sort()
    for e in L: print(e)

# ========================== #
# FIN DU PROGRAMME PRINCIPAL #
# ========================== #
