#include<vector>#include<iostream>#include<algorithm>#include<map>#include<stack>#include<deque>usingnamespace std;classSolution{public:longlongintNumberOf1Between1AndN_Solution(longlongint n,int z){
vector<longlongint> nums;while(n){
nums.push_back(n%z);
n /= z;}longlongint res =0;for(longlongint i=nums.size()-1; i >=0;i--){longlongint left=0, right =0, x =1;for(longlongint j = nums.size()-1; j >i; j--)
left = left * z + nums[j];for(longlongint k = i-1; k >=0; k--){
right = right *z + nums[k];
x *= z;}
res += left * x;if(nums[i]==1) res += right +1;elseif(nums[i]>1) res += x;}return res;}longlongminM(longlongint n,int k){longlongint r =(longlongint)1e9;longlongint l =1;while(l<=r){longlongint mid = l +(r - l)/2;longlong temp =NumberOf1Between1AndN_Solution(mid,k);if(temp == n)return mid;if(temp < n){
l = mid+1;}elseif(temp > n){
r = mid -1;}}if(NumberOf1Between1AndN_Solution(l,k)== n)return l;if(NumberOf1Between1AndN_Solution(l,k)> n){while(NumberOf1Between1AndN_Solution(l,k)> n){
l--;}return l+1;}else{while(NumberOf1Between1AndN_Solution(l,k)< n){
l++;}return l-1;}return l;}};intmain(){
Solution sol;longlong ans = sol.minM(10,10);// long long ans = sol.NumberOf1Between1AndN_Solution(10,10);
cout<<ans<<endl;}