#include <bits/stdc++.h>
using namespace std;
bool f[100100], vis[100100];
int res[100100];
void init() {
  for (int i = 2; i <= 320; i++) {
    if (!f[i]) {
      for (int j = i * 2; j <= 100000; j += i) {
        f[j] = true;
      }
    }
  }
}
int main() {
  init();
  int n;
  cin >> n;
  int ans = 0, tot = 0;
  for (int i = n / 2; i >= 2; i--) {
    if (f[i]) continue;
    int cnt = 0;
    for (int j = i; j <= n; j += i) {
      if (vis[j]) continue;
      if (j != 2 * i) {
        res[++tot] = j;
        vis[j] = true;
      }
      cnt++;
    }
    ans += cnt / 2;
    if (cnt % 2 == 0) {
      res[++tot] = 2 * i;
      vis[2 * i] = true;
    }
  }
  cout << ans << endl;
  for (int i = 1; i <= tot; i += 2) {
    cout << res[i] << " " << res[i + 1] << endl;
  }
  return 0;
}
