#include <bits/stdc++.h>
using namespace std;
int n;
bool u[100001], u2[100001];
vector<int> g;
vector<pair<int, int> > ans;
int main() {
  ios_base ::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cin >> n;
  for (int i = 2; i <= n; i += 2) {
    u[i] = 1;
  }
  for (int i = 3; i <= n / 2; ++i) {
    if (!u[i]) {
      g.push_back(i);
      for (int j = 3 * i; j <= n; j += i) {
        if (!u[j]) g.push_back(j);
        u[j] = 1;
      }
      if (int(g.size()) % 2 == 1) {
        g.push_back(2 * i);
        u2[2 * i] = 1;
      }
      for (int j = 0; j < int(g.size()); j += 2)
        ans.push_back(make_pair(g[j], g[j + 1]));
      g.clear();
    }
  }
  for (int i = 2; i <= n; i += 2) {
    if (!u2[i]) g.push_back(i);
  }
  for (int i = 0; i + 1 < int(g.size()); i += 2)
    ans.push_back(make_pair(g[i], g[i + 1]));
  cout << int(ans.size());
  for (auto to : ans) cout << endl << to.first << " " << to.second;
  return 0;
}
