#include <bits/stdc++.h>
using namespace std;
int n;
int p[100010], cnt[100010], save[100010];
vector<int> v[100010];
vector<pair<int, int> > ans;
void solve() {
  int i, j;
  memset(p, -1, sizeof(p));
  memset(save, -1, sizeof(save));
  for (i = 2; i <= n; i++)
    if (p[i] == -1) {
      p[i] = i;
      for (j = i; j <= n; j += i)
        if (p[j] == -1) p[j] = i;
    }
  for (i = 2; i <= n; i++) cnt[p[i]]++;
  for (i = 3; i <= n / 2; i++)
    if (p[i] == i && cnt[p[i]] & 1) save[2 * i] = p[i];
  for (i = 2; i <= n; i++)
    if (save[i] == -1)
      v[p[i]].push_back(i);
    else
      v[save[i]].push_back(i);
  for (i = 2; i <= n; i++)
    for (j = 0; j < v[i].size(); j += 2) {
      if (j + 1 < v[i].size()) ans.push_back(make_pair(v[i][j], v[i][j + 1]));
    }
  cout << ans.size() << endl;
  for (i = 0; i < ans.size(); i++)
    cout << ans[i].first << " " << ans[i].second << endl;
}
void input() {
  scanf("%d", &n);
  solve();
}
int main() {
  input();
  fclose(stdin);
  fclose(stdout);
  return 0;
}
