#include <stdio.h>
#include <math.h>
#include <stdbool.h>
// 判断质数:
bool Prime(int x) {
    if (x == 1)
        return false;
    int y = sqrt(x);
    for (int i = 2; i <= y; i++) {
        if (x % i == 0)
            return false;
    }
    return true;
}
typedef struct {
    int data;
    bool p;
    int cmp;
} DataP;
int main() {
    int n;
    scanf("%d", &n);
    DataP D[n + 1];
    for (int i = 0; i < n + 1; i++) {
        D[i].data = i;
        D[i].cmp = 0;
    }
    D[0].p = 0;
    D[0].cmp = 1;
    D[1].p = 0;
    D[1].cmp = 1;
    for (int j = 2; j < n ; j++) {
        if (D[j].cmp == 0) {
            int k = j;
            if (Prime(D[k].data)) {
                D[k].p = 1;
                D[k].cmp = 1;
                while (k * k < n) {
                    k *= k;
                    D[k].p = 0;
                    D[k].cmp = 1;
                }
            } else {
                D[k].p = 0;
                D[k].cmp = 1;
                while (k * k < n) {
                    k *= k;
                    D[k].p = 0;
                    D[k].cmp = 1;
                }
            }
        } else
            continue;
    }
    for (int l = 0; l < n ; l++) {
        if (D[l].p && l % 10 == 1)
            printf("%d ", D[l].data);
        else
            continue;
    }
    printf("\n");
    return 0;
}