#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:36777216")
using namespace std;
int sum[100005], id[100005], n;
vector<int> num[100005];
bool vis[100005];
void init() {
  for (int i = 2; i <= n; i++) {
    if (vis[i] == true) continue;
    id[i] = i, sum[i]++;
    for (int j = i + i; j <= n; j += i) {
      if (id[j] == 0) id[j] = i, sum[i]++;
      vis[j] = true;
    }
  }
}
vector<pair<int, int> > vec;
int main() {
  cin >> n;
  init();
  for (int i = 3; i <= n; i++)
    if (sum[i] & 1) id[i * 2] = i, sum[i]++;
  for (int i = 2; i <= n; i++) num[id[i]].push_back(i);
  for (int i = 2; i <= n; i++) {
    for (int j = 0; j < (int)num[i].size() - 1; j += 2) {
      vec.push_back(make_pair(num[i][j], num[i][j + 1]));
    }
  }
  cout << vec.size() << endl;
  for (int i = 0; i < vec.size(); i++)
    printf("%d %d\n", vec[i].first, vec[i].second);
}
