import bisect


def index(a, x, start):
    i = bisect.bisect_left(a, x, start)
    if i != len(a) and a[i] == x:
        return i
    return None


def sieve_algo(final_number):

    size = final_number//2
    sieve_matrix = [1] * size
    limit = int(final_number**0.5)

    for i in range(1, limit):
        if sieve_matrix[i]:
            value = 2 * i + 1
            temp = ((size - 1) - i)//value
            sieve_matrix[i + value::value] = [0] * temp

    return [2] + [i * 2 + 1 for i, v in enumerate(sieve_matrix) if v and i > 0]


primes = sieve_algo(1000001)

while True:
    num = int(input())
    if num == 0:
        break

    for i, prime in enumerate(primes):
        if prime*2 > num:
            break

        loc = index(primes, num-prime, i)
        if loc:
            print("{} = {} + {}".format(num, prime, primes[loc]))
            break
