# https://stackoverflow.com/questions/18114138/computing-eulers-totient-function
from math import gcd

def phi(n):
    amount = 0
    for k in range(1, n + 1):
        if gcd(n, k) == 1:
            amount += 1
    return amount

# claude.ai

def euler_totient_sieve(limit: int) -> list[int]:
    phi = list(range(limit + 1))

    for p in range(2, limit + 1):
        if phi[p] == p:          # p is prime
            for m in range(p, limit + 1, p):
                phi[m] -= phi[m] // p

    return phi

phi_tbl = euler_totient_sieve(10**7+1)

def is_permutation(s1, s2):
    return sorted(str(s1))==sorted(str(s2))

import sys

for n in range(1+1, 10**7+1):
    if is_permutation(n, phi_tbl[n]):
        print (n/phi_tbl[n], n)
        sys.stdout.flush()

