#include <bits/stdc++.h>
#define FOR(i,a,b) for(int i=(a);i<(b);++i)
#define REP(i,n)  for(int i=0;i<(n);++i)
#define FORq(i, m, n) for(int i = (m);i <= (n);++i)
#define SCD(n) scanf("%d",&n)
#define SCD2(m,n) scanf("%d%d",&m,&n)
#define SCD3(m,n,k) scanf("%d%d%d",&m,&n,&k)
#define PB push_back
#define MP make_pair
#define ARSCD(A,N) REP(i,N){SCD(A[i]);}
#define ARSCD1(A,N) FORq(i,1,N){SCD(A[i]);}
#define PRINTD(n) printf("%d\n",n)
#define PRINTLLD(n) printf("%lld\n",n)
#define DEBUG printf("%s\n","debug")
#define fst first
#define snd second
#define IN(x,S) (S.count(x) != 0)
using namespace std;
typedef pair<int,int> PII;
typedef vector<int> VI;
typedef long long ll;
//////////////////////////////////////////////////////

//AtCoder Beginner Contest 101

ll sumDigit(ll x){
	ll ret = 0;
	while(true){
		if (x == 0) return ret;
		ret = ret + (x % 10);
		x = x / 10;
	}
	return 0;
}

ll countten(ll x){
	ll ret = 1;
	while(true){
		x = x/10;
		if (x == 0) return ret;
		else ret = ret*10;
	}
}


int main(){
	ll K; cin >> K;
	for (ll i = 1; i <= 9 ; i++){
		if (K < i) return 0;
		PRINTD(i);
	}
	
	K -= 9;
	ll now = 9;
	
	for(ll i = 1; i <= K;i++){
		now += 10;
		ll comp,compdig,nowdig,comp2dig,comp2;
		nowdig = sumDigit(now);
		
		ll cten = countten(now);
		
		bool flg = true;
		
		FORq(k,1,9){
		comp = k * ((now / cten) * cten) + (cten - 1);
		compdig = sumDigit(comp);
		
		comp2 = countten(now) * 10 - 1;
		comp2dig = sumDigit(comp2);

		
		
		if ((now * compdig) > (comp*nowdig)){
			flg = false;
		}else if((now * comp2dig) > (comp2*nowdig)){
			flg = false;
		}
		
		comp++;
		compdig = sumDigit(comp);
		
		if ((now * compdig) > (comp*nowdig)){
			flg = false;
		}else if((now * comp2dig) > (comp2*nowdig)){
			flg = false;
		}
		
		comp++;
		compdig = sumDigit(comp);
		
		if ((now * compdig) > (comp*nowdig)){
			flg = false;
		}else if((now * comp2dig) > (comp2*nowdig)){
			flg = false;
		}
		
		
		comp2++;
		comp2++;
		comp2dig = sumDigit(comp2);
		
		if ((now * compdig) > (comp*nowdig)){
			flg = false;
		}else if((now * comp2dig) > (comp2*nowdig)){
			flg = false;
		}
		
		
		}
		
		}
		if (flg){
			PRINTLLD(now);
		}else{
			i--;
		}
		
	}
	
	
}