#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:100000000")
using namespace std;
int A[100100], B[100100], l, u[100100], p[100100];
void make(int a, int b) {
  u[a] = 1;
  u[b] = 1;
  A[l] = a;
  B[l] = b;
  l++;
}
int main() {
  int n, i, j, k, t, g;
  scanf("%d", &n);
  if (n == 1) {
    printf("0\n");
    return 0;
  }
  for (i = 2; i * i <= n; i++)
    if (!p[i])
      for (j = i * i; j <= n; p[j] = 1, j += i)
        ;
  for (j = 0, i = 2; i <= n; i++)
    if (!p[i]) p[j++] = i;
  k = j;
  for (i = 1; i < k; i++) {
    t = 0;
    for (j = p[i]; j <= n; t += !u[j], j += p[i])
      ;
    g = 0;
    for (j = p[i]; j <= n; j += p[i])
      if (!u[j] && (t % 2 == 0 || j != 2 * p[i]))
        if (g == 0)
          g = j;
        else {
          make(g, j);
          g = 0;
        }
  }
  i = 0;
  g = 0;
  for (j = p[i]; j <= n; j += p[i])
    if (!u[j])
      if (g == 0)
        g = j;
      else {
        make(g, j);
        g = 0;
      }
  printf("%d\n", l);
  for (i = 0; i < l; printf("%d %d\n", A[i], B[i]), i++)
    ;
  return 0;
}
