#include <bits/stdc++.h>
using namespace std;

long long dp1[9] = {1,2,3,4,5,6,7,8,9};
long long dp2[27] = {0};
long long dp3[81] = {0};
long long dp4[247] = {0};
long long dp5[729] = {0};
long long dp6[2187] = {0};
long long dp7[6561] = {0};
long long dp8[19683] = {0};
long long dp9[59049] = {0};
long long dp10[50000] = {0};


int main() {
    long long k, t_sum = 0, i, j, ele = 0;
    cin >> k;
    if(k < 10) cout << dp1[k-1];
    else{
        t_sum = 9;
        for(i = 0; i < 9; i++){
            for(j = 0; j < 3; j++) {
                if(i == 8 && j == 2) break;
                dp2[i*3+j] = dp1[i] * 10 + dp1[i] - 1 + j;
                t_sum++;
                if(t_sum == k){
                    cout << dp2[i*3+j] << endl;
                    return 0;
                }
            }
        }
        ele = 0;
        for(i = 0; i < 27; i++){
            if(dp2[i] == 0) break;
            for(j = 0; j < 3; j++) {
                if(j == 0 && dp2[i]%10 == 0) continue;
                else if(j == 2 && dp2[i]%10 == 9) break;
                else {
                    //cout << ele << endl;
                    dp3[ele] = dp2[i] * 10 + (dp2[i] % 10) - 1 + j;
                    t_sum++;
                    if (t_sum == k){
                        cout << dp3[ele] << endl;
                        return 0;
                    }
                    ele++;
                }
            }
        }
        ele = 0;
        for(i = 0; i < 81; i++){
            if(dp3[i] == 0) break;
            for(j = 0; j < 3; j++) {
                if(j == 0 && dp3[i]%10 == 0) continue;
                else if(j == 2 && dp3[i]%10 == 9) break;
                else {
                    dp4[ele] = dp3[i] * 10 + (dp3[i] % 10) - 1 + j;
                    t_sum++;
                    if (t_sum == k){
                        cout << dp4[ele] << endl;
                        return 0;
                    }
                    ele++;
                }
            }
        }
        ele = 0;
        for(i = 0; i < 243; i++){
            if(dp4[i] == 0) break;
            for(j = 0; j < 3; j++) {
                if(j == 0 && dp4[i]%10 == 0) continue;
                else if(j == 2 && dp4[i]%10 == 9) break;
                else {
                    dp5[ele] = dp4[i] * 10 + (dp4[i] % 10) - 1 + j;
                    t_sum++;
                    if (t_sum == k){
                        cout << dp5[ele] << endl;
                        return 0;
                    }
                    ele++;
                }
            }
        }
        ele = 0;
        for(i = 0; i < 729; i++){
            if(dp5[i] == 0) break;
            for(j = 0; j < 3; j++) {
                if(j == 0 && dp5[i]%10 == 0) continue;
                else if(j == 2 && dp5[i]%10 == 9) break;
                else {
                    dp6[ele] = dp5[i] * 10 + (dp5[i] % 10) - 1 + j;
                    t_sum++;
                    if (t_sum == k){
                        cout << dp6[ele] << endl;
                        return 0;
                    }
                    ele++;
                }
            }
        }
        ele = 0;
        for(i = 0; i < 2187; i++){
            if(dp6[i] == 0) break;
            for(j = 0; j < 3; j++) {
                if(j == 0 && dp6[i]%10 == 0) continue;
                else if(j == 2 && dp6[i]%10 == 9) break;
                else {
                    dp7[ele] = dp6[i] * 10 + (dp6[i] % 10) - 1 + j;
                    t_sum++;
                    if (t_sum == k){
                        cout << dp7[ele] << endl;
                        return 0;
                    }
                    ele++;
                }
            }
        }
        ele = 0;
        for(i = 0; i < 6561; i++){
            if(dp7[i] == 0) break;
            for(j = 0; j < 3; j++) {
                if(j == 0 && dp7[i]%10 == 0) continue;
                else if(j == 2 && dp7[i]%10 == 9) break;
                else {
                    dp8[ele] = dp7[i] * 10 + (dp7[i] % 10) - 1 + j;
                    t_sum++;
                    if (t_sum == k){
                        cout << dp8[ele] << endl;
                        return 0;
                    }
                    ele++;
                }
            }
        }
        ele = 0;
        for(i = 0; i < 19683; i++){
            if(dp8[i] == 0) break;
            for(j = 0; j < 3; j++) {
                if(j == 0 && dp8[i]%10 == 0) continue;
                else if(j == 2 && dp8[i]%10 == 9) break;
                else {
                    dp9[ele] = dp8[i] * 10 + (dp8[i] % 10) - 1 + j;
                    t_sum++;
                    if (t_sum == k){
                        cout << dp9[ele] << endl;
                        return 0;
                    }
                    ele++;
                }
            }
        }
        ele = 0;
        for(i = 0; i < 50000; i++){
            if(dp9[i] == 0) break;
            for(j = 0; j < 3; j++) {
                if(j == 0 && dp9[i]%10 == 0) continue;
                else if(j == 2 && dp9[i]%10 == 9) break;
                else {
                    dp10[ele] = dp9[i] * 10 + (dp9[i] % 10) - 1 + j;
                    t_sum++;
                    if (t_sum == k){
                        cout << dp10[ele] << endl;
                        return 0;
                    }
                    ele++;
                }
            }
        }
    }
}

Measured memory_bytes: 1024