#include <bits/stdc++.h>
using namespace std;
const int inf = 0x3f3f3f3f, N = 1e3 + 5, MOD = 1e9 + 7;
int T, cas = 0;
int n, m;
bool vis[N];
vector<int> primes;
void Init_Primes() {
  memset(vis, 0, sizeof(vis));
  int m = sqrt(N + 0.5);
  for (int i = (2); i <= (m); i++)
    if (!vis[i])
      for (int j = i * i; j <= N; j += i) vis[j] = 1;
  for (int i = (2); i < (N); i++)
    if (!vis[i]) primes.push_back(i);
}
int main() {
  Init_Primes();
  while (scanf("%d", &n) != EOF) {
    int a[N], k = 0;
    for (int i = 2; i <= n; i++) {
      if (!vis[i]) {
        int t = 1;
        while (t * i <= n) {
          t *= i;
          a[k++] = t;
        }
      }
    }
    printf("%d\n", k);
    for (int i = 0; i < (k - 1); i++) printf("%d ", a[i]);
    if (k > 0) printf("%d\n", a[k - 1]);
  }
  return 0;
}
