#include <bits/stdc++.h>
using namespace std;
int a[100000];
int m;
pair<int, int> b[100000];
int s;
int c[100000];
int d;
bool g[100001];
int main() {
  int n;
  cin >> n;
  a[0] = 2;
  m = 1;
  for (int i = 3; i <= n / 2; i += 2) {
    bool f = true;
    for (int j = 0; j < m && a[j] < i / 2; j++) {
      if (i % a[j] == 0) {
        f = false;
        break;
      }
    }
    if (f) {
      a[m++] = i;
    }
  }
  for (int i = 1; i <= n; i++) {
    g[i] = true;
  }
  s = 0;
  for (int i = m - 1; i >= 0; i--) {
    int p = a[i];
    int k = n / a[i];
    int first = 0;
    int second = 0;
    for (int j = k; j >= 1; j--) {
      if (g[p * j]) {
        if (first) {
          if (j == 2) {
            continue;
          }
          second = p * j;
          g[p * j] = false;
          b[s++] = make_pair(first, second);
          first = 0;
          second = 0;
        } else {
          first = p * j;
          g[p * j] = false;
        }
      }
    }
    if (g[p * 2]) {
      c[d++] = p * 2;
      g[p * 2] = false;
    }
  }
  for (int i = 0; i < d - 1; i += 2) {
    b[s++] = make_pair(c[i], c[i + 1]);
  }
  cout << s << endl;
  for (int i = 0; i < int(s); i++) {
    cout << b[i].first << " " << b[i].second << endl;
  }
  return 0;
}
