import sys

sys.setrecursionlimit(3000)

k = int(eval(input()))



ans = []



def solve(x, l):

    if int(x) > 3234566667:

        return l



    l.append(int(x))

    if x[-1] == '0':

        solve(x + '0', l)

        solve(x + '1', l)

    elif x[-1] == '9':

        solve(x + '9', l)

        solve(x + '8', l)

    else:

        last_digit = int(x[-1])

        for i in range(-1, 2):

            new_digit = last_digit + i

            solve(x + str(new_digit), l)



for i in range(1, 10):

    solve(str(i), ans)

ans.sort()

print((ans[k - 1]))
from collections import deque

k = int(eval(input()))





#初めに、1~9まではキューに入れておく

q = deque([i for i in range(1, 10)])

ans = 0

while True:

    v = q.popleft()

    ans += 1

    if ans == k:

        print(v)

        break

    

    #末尾の1桁を求める

    last_digit = v % 10

    #求めた末尾の1桁との差が1になる数字を最後の1桁にする

    #つまり、末尾の1桁に対して-1,+0,+1とする計算を行う

    for i in range(-1, 2):

        new_digit = last_digit + i

        if new_digit < 0 or new_digit > 9:

            continue

        q.append(v * 10 + new_digit)

import sys

sys.setrecursionlimit(3000)
k = int(eval(input()))
ans = []


def solve(x, l):
    if int(x) > 3234566667:
        return l
    l.append(int(x))
    if x[-1] == "0":
        solve(x + "0", l)
        solve(x + "1", l)
    elif x[-1] == "9":
        solve(x + "9", l)
        solve(x + "8", l)
    else:
        last_digit = int(x[-1])
        for i in range(-1, 2):
            new_digit = last_digit + i
            solve(x + str(new_digit), l)


for i in range(1, 10):
    solve(str(i), ans)
ans.sort()
print((ans[k - 1]))

from collections import deque

k = int(eval(input()))
# 初めに、1~9まではキューに入れておく
q = deque([i for i in range(1, 10)])
ans = 0
while True:
    v = q.popleft()
    ans += 1
    if ans == k:
        print(v)
        break
    # 末尾の1桁を求める
    last_digit = v % 10
    # 求めた末尾の1桁との差が1になる数字を最後の1桁にする
    # つまり、末尾の1桁に対して-1,+0,+1とする計算を行う
    for i in range(-1, 2):
        new_digit = last_digit + i
        if new_digit < 0 or new_digit > 9:
            continue
        q.append(v * 10 + new_digit)

-import sys +from collections import deque -sys.setrecursionlimit(3000) -ans = [] - - -def solve(x, l): -    if int(x) > 3234566667: -        return l -    l.append(int(x)) -    if x[-1] == "0": -        solve(x + "0", l) -        solve(x + "1", l) -    elif x[-1] == "9": -        solve(x + "9", l) -        solve(x + "8", l) -    else: -        last_digit = int(x[-1]) -        for i in range(-1, 2): -            new_digit = last_digit + i -            solve(x + str(new_digit), l) - - -for i in range(1, 10): -    solve(str(i), ans) -ans.sort() -print((ans[k - 1])) +# 初めに、1~9まではキューに入れておく +q = deque([i for i in range(1, 10)]) +ans = 0 +while True: +    v = q.popleft() +    ans += 1 +    if ans == k: +        print(v) +        break +    # 末尾の1桁を求める +    last_digit = v % 10 +    # 求めた末尾の1桁との差が1になる数字を最後の1桁にする +    # つまり、末尾の1桁に対して-1,+0,+1とする計算を行う +    for i in range(-1, 2): +        new_digit = last_digit + i +        if new_digit < 0 or new_digit > 9: +            continue +        q.append(v * 10 + new_digit)