import std.stdio, std.algorithm, std.range, std.conv, std.string, std.math, std.container, std.typecons;
import core.stdc.stdio;
// foreach, foreach_reverse, writeln

void main() {
	const int N = 15*9+1;
	int K;
	scanf("%d", &K);
	long[] x = new long[N];
	char[] f(int s) {
		int n = s/9, r = s%9;
		char[] nine = new char[n];
		nine[] = '9';
		return new char[0] ~ to!char('0'+r) ~ nine;
	}
	foreach (i ; 1..N) {
		x[i] = to!long(f(i));
	}
	long[] a = x;
	foreach (i ; 9..N-1) {
		char[] s = f(i);
		s[0]++;
		int l = to!int(s.length);
		foreach (j; 1..l) {
			s[j] = '8';
			long cur = to!long(s);
			if (cur*(i+1) <= x[i+1]*i) a ~= cur;
			s[j] = '9';
		}
	}
	a.sort;
	foreach (i; 1..K+1) {
		writeln(a[i]);
	}
}