#include <bits/stdc++.h>
int n, tot, ans[50010][2], totp, p[100010], tmp[100010];
bool bo[100010];
void calc(int x) {
  if (!x) return;
  int last = 0;
  tmp[0] = 0;
  for (int i = x; i <= n; i += x)
    if (!bo[i]) tmp[++tmp[0]] = i;
  if (tmp[0] % 2 == 0)
    for (int i = 1; i < tmp[0]; i += 2) {
      ans[++tot][0] = tmp[i], ans[tot][1] = tmp[i + 1];
      bo[tmp[i]] = bo[tmp[i + 1]] = 1;
    }
  else if (tmp[0] > 1) {
    for (int i = 4; i < tmp[0]; i += 2) {
      ans[++tot][0] = tmp[i], ans[tot][1] = tmp[i + 1];
      bo[tmp[i]] = bo[tmp[i + 1]] = 1;
    }
    ans[++tot][0] = tmp[1], ans[tot][1] = tmp[3];
    bo[tmp[1]] = bo[tmp[3]] = 1;
  }
}
int main() {
  scanf("%d", &n);
  for (int i = 2; i <= 100000; ++i) {
    bool succ = true;
    for (int j = 2; j * j <= i; ++j)
      if (i % j == 0) {
        succ = false;
        break;
      }
    if (succ) p[++totp] = i;
  }
  for (int i = 2; i <= totp; ++i) calc(p[i]);
  calc(2);
  printf("%d\n", tot);
  for (int i = 1; i <= tot; ++i) printf("%d %d\n", ans[i][0], ans[i][1]);
  return 0;
}
