#include <stdio.h>

#define N 30

int p[N] = {2}, m[N] = {2}, k = 1;

void genprim(void) {
	for (int i = 1, j = 3; i < N; j += 2) {
		if (j == p[k] * p[k]) {
			m[k++] = j;
			goto np;
		}
	
		for (int l = 1, ml = m[l], pl2 = p[l] * 2; l < k; ++l) {
			while (ml < j)
		    	ml += pl2;
			if (j == (m[l] = ml))
				goto np;
		}
		
		p[i++] = j;
np:;
    }
}

int main(void) {
	genprim();
	for (int i = 0; i < N; ++i)
		printf("%d ", p[i]);
	puts("\n");
	return 0;
}
