output_description: Print K lines. The i-th line should contain the i-th smallest Snuke number.
  
  * * *
input_description: Input is given from Standard Input in the following format:
  
      
      
      K
attempt: #include<bits/stdc++.h>
  using namespace std;
  #define rep(i,n) for(int i=0;i<n;i++)
  #define all(v) v.begin(), v.end()
  typedef long long ll;
  typedef pair<ll,ll> P;
  typedef vector<ll> vec;
  typedef vector<vec> mat;
  ll sum(ll x){
      ll ans=0;
      while(x>0) ans+=x%10,x/=10;
      return ans;
  }
  vec ans;
  int search(ll x){
      if(x>pow(10,15)) return 0;
      ll y=x,k=0,a;
      while(y>0){
          if(y%10!=9){
              a=y%10;
              break;
          }
          k++;
          y/=10;
      }
      if(k==ll(log10(x))+1) ans.push_back(x),search(x+1);
      else{
          if(x<=sum(x)*ll(pow(10,k))) ans.push_back(x),search(x+pow(10,k));
          else search(x+(9-a)*pow(10,k));
      }
  }
  int main(){
      ll k;
      cin>>k;
      search(1);
      sort(all(ans));
      rep(i,k) cout<<ans[i]<<"\n";
  }
problem_description: Statement
  
  Let S(n) denote the sum of the digits in the decimal notation of n. For
  example, S(123) = 1 + 2 + 3 = 6.
  
  We will call an integer n a **Snuke number** when, for all positive integers m
  such that m > n, \frac{n}{S(n)} \leq \frac{m}{S(m)} holds.
  
  Given an integer K, list the K smallest Snuke numbers.
samples: [{"input": "10", "output": "1\n    2\n    3\n    4\n    5\n    6\n    7\n    8\n    9\n    19"}]