#include using namespace std; const int MAXN = 162, MAXM = 100000; long long dp[MAXM + 10][MAXN + 10]; int main() { long long n, k; cin >> n >> k; if (n >= 162) { cout << k; return 0; } dp[0][0] = 1; int t = 0; for (int i = 0; i < MAXM; i++) { for (int j = 0; j <= n; j++) { if (!dp[i][j]) { continue; } for (int l = 0; l <= 9; l++) { if (j + l > n) { continue; } dp[i + 1][j + l] += dp[i][j]; } } if (dp[i + 1][n] > k) { t = i + 1; break; } } bool flag = false; for (int i = t; i >= 1; i--) { int j; for (j = 0; j <= 9; j++) { if (n - j < 0) { break; } if (dp[i - 1][n - j] <= k) { k -= dp[i - 1][n - j]; } else { n -= j; break; } } if (j) { flag = true; } if (flag) { cout << j; } } return 0; }