#!/usr/bin/python3

import math
from functools import cache


@cache
def fact(x: int) -> int:
    if x == 1 or x == 0:
        return 1
    return fact(x-1) * x


fact_table = {fact(x): x for x in range(10)}


best_res = None


@cache
def solve(serial: int, current_res: int = 0, curr_sum: int = 0, log = 0) -> None:
    global best_res
    # print(f'{serial=}, {current_res=}, {curr_sum=}')

    if best_res is not None and current_res > best_res:
        return

    if curr_sum == serial and (len(str(current_res)) == log or log == 0):
        if best_res == None:
            best_res = current_res
        else:
            best_res = min(current_res, best_res)
        return

    for i in range(9, -1, -1):
        factorial = fact(i)
        next_sum = curr_sum + factorial
        if serial < next_sum:
            continue
        order = 10 ** log
        solve(serial, current_res + i * order, next_sum, log+1)


y = int(input())

solve(y) 
print(best_res)



