#include <bits/stdc++.h>
using namespace std;
const long long mod = 1e9 + 7;
vector<int> a[100005], ans;
bool book[100005];
int main() {
  int n;
  cin >> n;
  if (n == 1) {
    cout << 0;
    return 0;
  }
  for (int i = 3; i <= n; i++) {
    if ((i % 2 == 1) && book[i] == 0) {
      for (int j = i; j <= n; j += i) {
        if (book[j] == 0) {
          a[i].push_back(j);
          book[j] = 1;
        }
      }
    }
  }
  for (int i = 3; i <= (n / 2); i++) {
    if (a[i].size() > 0) {
      if (a[i].size() % 2 == 1) {
        a[i].erase(a[i].begin() + 1);
        book[2 * i] = 0;
      }
      while (a[i].size() > 0) {
        ans.push_back(a[i].back());
        a[i].pop_back();
      }
    }
  }
  for (int i = 2; i <= n; i += 2) {
    if (book[i] == 0) {
      a[2].push_back(i);
    }
  }
  for (int i = 0; i < a[2].size() - 1; i += 2) {
    ans.push_back(a[2][i]);
    ans.push_back(a[2][i + 1]);
  }
  int answer = (ans.size() >> 1);
  cout << answer << endl;
  for (int i = ans.size() - 1; i >= 0; i -= 2) {
    cout << ans[i] << " " << ans[i - 1] << endl;
  }
}
