#include <bits/stdc++.h>
using namespace std;
void executeTime() {
cerr << "Time Taken: " << (float)clock() / CLOCKS_PER_SEC << " secs";
}
int main() {
int n; cin >> n;
vector<int> spf(n + 1, 1);
spf[0] = 0;
for (int i = 0; i <= n; i++) {
spf[i] = i;
}
for (int i = 2; i <= sqrt(n); i++) {
for (int j = i * i; j <= n; j += i) {
if (spf[j] == j) spf[j] = i;
}
}
for (int i = 2; i <= n; i++) {
cout << i << ' ' << spf[i] << endl;
}
executeTime();
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp2b2lkIGV4ZWN1dGVUaW1lKCkgewogICAgY2VyciA8PCAiVGltZSBUYWtlbjogIiA8PCAoZmxvYXQpY2xvY2soKSAvIENMT0NLU19QRVJfU0VDIDw8ICIgc2VjcyI7Cn0KCmludCBtYWluKCkgewoKICAgIGludCBuOyBjaW4gPj4gbjsKCiAgICB2ZWN0b3I8aW50PiBzcGYobiArIDEsIDEpOwoKICAgIHNwZlswXSA9IDA7CiAgICBmb3IgKGludCBpID0gMDsgaSA8PSBuOyBpKyspIHsKICAgICAgICBzcGZbaV0gPSBpOwogICAgfQoKCiAgICBmb3IgKGludCBpID0gMjsgaSA8PSBzcXJ0KG4pOyBpKyspIHsKICAgICAgICBmb3IgKGludCBqID0gaSAqIGk7IGogPD0gbjsgaiArPSBpKSB7CiAgICAgICAgICAgIGlmIChzcGZbal0gPT0gaikgc3BmW2pdID0gaTsKICAgICAgICB9CiAgICB9CgogICAgZm9yIChpbnQgaSA9IDI7IGkgPD0gbjsgaSsrKSB7CiAgICAgICAgY291dCA8PCBpIDw8ICcgJyA8PCBzcGZbaV0gPDwgZW5kbDsKICAgIH0KCgoKICAgIGV4ZWN1dGVUaW1lKCk7CiAgICByZXR1cm4gMDsKfQ==