def MI():return map(int,input().split())
def LI():return list(MI())
K=int(input())#10**5
# import numpy as np
# def lunlun(x):
#     S=list(str(x))
#     nums=list(map(int,S))
#     a=np.diff(nums)
#     if (np.abs(a)<=1).all():
#         return True
#     else:
#         False

Ls=[1,2,3,4,5,6,7,8,9]
Ls2=[];Ls3=[];Ls4=[];Ls5=[];Ls6=[];Ls7=[];Ls8=[];Ls9=[];Ls10=[];
#max 3234566667 10keta
for i in Ls:
    migihaji=str(i)[-1]
    if migihaji=="9":
        Ls2+=(i*10+8),
        Ls2+=(i*10+9),
    elif migihaji=="0":
        Ls2+=(i*10+1),
        Ls2+=(i*10+0),
    else:
        Ls2+=(i*10+int(migihaji)+1),
        Ls2+=(i*10+int(migihaji)+0),
        Ls2+=(i*10+int(migihaji)-1),
# print(sorted(Ls2))

for i in Ls2:
    migihaji=str(i)[-1]
    if migihaji=="9":
        Ls3+=(i*10+8),
        Ls3+=(i*10+9),
    elif migihaji=="0":
        Ls3+=(i*10+1),
        Ls3+=(i*10+0),
    else:
        Ls3+=(i*10+int(migihaji)+1),
        Ls3+=(i*10+int(migihaji)+0),
        Ls3+=(i*10+int(migihaji)-1),



for i in Ls3:
    migihaji=str(i)[-1]
    if migihaji=="9":
        Ls4+=(i*10+8),
        Ls4+=(i*10+9),
    elif migihaji=="0":
        Ls4+=(i*10+1),
        Ls4+=(i*10+0),
    else:
        Ls4+=(i*10+int(migihaji)+1),
        Ls4+=(i*10+int(migihaji)+0),
        Ls4+=(i*10+int(migihaji)-1),





for i in Ls4:
    migihaji=str(i)[-1]
    if migihaji=="9":
        Ls5+=(i*10+8),
        Ls5+=(i*10+9),
    elif migihaji=="0":
        Ls5+=(i*10+1),
        Ls5+=(i*10+0),
    else:
        Ls5+=(i*10+int(migihaji)+1),
        Ls5+=(i*10+int(migihaji)+0),
        Ls5+=(i*10+int(migihaji)-1),





for i in Ls5:
    migihaji=str(i)[-1]
    if migihaji=="9":
        Ls6+=(i*10+8),
        Ls6+=(i*10+9),
    elif migihaji=="0":
        Ls6+=(i*10+1),
        Ls6+=(i*10+0),
    else:
        Ls6+=(i*10+int(migihaji)+1),
        Ls6+=(i*10+int(migihaji)+0),
        Ls6+=(i*10+int(migihaji)-1),





for i in Ls6:
    migihaji=str(i)[-1]
    if migihaji=="9":
        Ls7+=(i*10+8),
        Ls7+=(i*10+9),
    elif migihaji=="0":
        Ls7+=(i*10+1),
        Ls7+=(i*10+0),
    else:
        Ls7+=(i*10+int(migihaji)+1),
        Ls7+=(i*10+int(migihaji)+0),
        Ls7+=(i*10+int(migihaji)-1),





for i in Ls7:
    migihaji=str(i)[-1]
    if migihaji=="9":
        Ls8+=(i*10+8),
        Ls8+=(i*10+9),
    elif migihaji=="0":
        Ls8+=(i*10+1),
        Ls8+=(i*10+0),
    else:
        Ls8+=(i*10+int(migihaji)+1),
        Ls8+=(i*10+int(migihaji)+0),
        Ls8+=(i*10+int(migihaji)-1),





for i in Ls8:
    migihaji=str(i)[-1]
    if migihaji=="9":
        Ls9+=(i*10+8),
        Ls9+=(i*10+9),
    elif migihaji=="0":
        Ls9+=(i*10+1),
        Ls9+=(i*10+0),
    else:
        Ls9+=(i*10+int(migihaji)+1),
        Ls9+=(i*10+int(migihaji)+0),
        Ls9+=(i*10+int(migihaji)-1),





for i in Ls9:
    migihaji=str(i)[-1]
    if migihaji=="9":
        Ls10+=(i*10+8),
        Ls10+=(i*10+9),
    elif migihaji=="0":
        Ls10+=(i*10+1),
        Ls10+=(i*10+0),
    else:
        Ls10+=(i*10+int(migihaji)+1),
        Ls10+=(i*10+int(migihaji)+0),
        Ls10+=(i*10+int(migihaji)-1),




Lunluns=Ls+Ls2+Ls3+Ls4+Ls5+Ls6+Ls7+Ls8+Ls9+Ls10
Lunluns.sort()

print(Lunluns[K-1])

Measured memory_bytes: 13884