#include<bits/stdc++.h>
using namespace std;
#define endl '\n'
#define int long long
const int MOD = pow(10,9)+7;
const int MOD2 = 998244353;
const int INF = LLONG_MAX/2;
int primes[1000000];
void seive(){
fill(primes, primes + 1000000, 1);
primes[0] = primes[1] = 0;
for(int i = 2 ; i*i < 1000000 ; i++){
if(primes[i]){
for(int j = i*i ; j < 1000000 ; j += i){
primes[j] = 0;
}
}
}
}
int spf[1000000];
void SPF(){
for(int i = 0 ; i<1000000 ; i++){
spf[i] = i;
}
for(int i = 1 ; i<=sqrt(1000000) ; i++){
if(spf[i]==i){
for(int j = i*i ; j<=1000000 ; j+=i){
if(spf[j]==j){
spf[j] = i;
}
}
}
}
}
void solve() {
SPF();
for(int i = 1 ; i<=100 ; i++){
cout<<spf[i]<<" ";
}
cout<<endl;
}
signed main(){
ios::sync_with_stdio(false); cin.tie(NULL);
//int t;
//cin >> t;
//while(t--){
solve();
//}
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSBlbmRsICdcbicKI2RlZmluZSBpbnQgbG9uZyBsb25nCmNvbnN0IGludCBNT0QgPSBwb3coMTAsOSkrNzsKY29uc3QgaW50IE1PRDIgPSA5OTgyNDQzNTM7CmNvbnN0IGludCBJTkYgPSBMTE9OR19NQVgvMjsKIAppbnQgcHJpbWVzWzEwMDAwMDBdOwogCnZvaWQgc2VpdmUoKXsKICAgIGZpbGwocHJpbWVzLCBwcmltZXMgKyAxMDAwMDAwLCAxKTsKICAgIHByaW1lc1swXSA9IHByaW1lc1sxXSA9IDA7CiAgICBmb3IoaW50IGkgPSAyIDsgaSppIDwgMTAwMDAwMCA7IGkrKyl7CiAgICAgICAgaWYocHJpbWVzW2ldKXsKICAgICAgICAgICAgZm9yKGludCBqID0gaSppIDsgaiA8IDEwMDAwMDAgOyBqICs9IGkpewogICAgICAgICAgICAgICAgcHJpbWVzW2pdID0gMDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQppbnQgc3BmWzEwMDAwMDBdOwp2b2lkIFNQRigpewogICBmb3IoaW50IGkgPSAwIDsgaTwxMDAwMDAwIDsgaSsrKXsKICAgICAgIHNwZltpXSA9IGk7CiAgIH0KICAgZm9yKGludCBpID0gMSA7IGk8PXNxcnQoMTAwMDAwMCkgOyBpKyspewogICAgICAgIGlmKHNwZltpXT09aSl7CiAgICAgICAgICAgIGZvcihpbnQgaiA9IGkqaSA7IGo8PTEwMDAwMDAgOyBqKz1pKXsKICAgICAgICAgICAgICAgIGlmKHNwZltqXT09ail7CiAgICAgICAgICAgICAgICBzcGZbal0gPSBpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICB9Cn0Kdm9pZCBzb2x2ZSgpIHsKICAgIFNQRigpOwogICAgZm9yKGludCBpID0gMSA7IGk8PTEwMCA7IGkrKyl7CiAgICAgICAgY291dDw8c3BmW2ldPDwiICI7CiAgICB9CiAgICBjb3V0PDxlbmRsOwp9CiAKc2lnbmVkIG1haW4oKXsKICAgIGlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsgY2luLnRpZShOVUxMKTsKICAgIC8vaW50IHQ7CiAgICAvL2NpbiA+PiB0OwogICAgLy93aGlsZSh0LS0pewogICAgICAgIHNvbHZlKCk7CiAgICAvL30KICAgIHJldHVybiAwOwp9