#include <bits/stdc++.h>
using namespace std;
const double pi = acos(-1.0);
const int base = 1000000007;
struct qwe {
  int i, j;
};
const int maxn = 150000;
int n, dd[maxn], a[maxn], s[maxn], m, ans;
qwe res[maxn];
void push_res(int i, int j) {
  ans++;
  res[ans].i = i;
  res[ans].j = j;
  dd[i] = 1;
  dd[j] = 1;
}
void update() {
  if (m % 2 == 0)
    for (int i = 1; i <= m / 2; i++) push_res(s[i], s[m - i + 1]);
  else
    for (int i = 2; i <= m / 2 + 1; i++) push_res(s[i], s[m - i + 2]);
}
void solve() {
  for (int i = 1; i <= n; i++) a[i] = i % 2;
  a[0] = a[1] = 0;
  int i = 3;
  while (i <= n / 2) {
    s[1] = i + i;
    s[2] = i;
    m = 2;
    int j = i + i;
    while (j <= n) {
      a[j] = 0;
      if (j != i + i and dd[j] == 0) s[++m] = j;
      j += i;
    }
    update();
    i++;
    while (a[i] == 0) i++;
  }
  m = 0;
  for (int i = 2; i <= n; i++)
    if (dd[i] == 0 and i % 2 == 0) s[++m] = i;
  update();
}
int main() {
  scanf("%d", &n);
  solve();
  printf("%d\n", ans);
  for (int i = 1; i <= ans; i++) printf("%d %d\n", res[i].i, res[i].j);
  return 0;
}
