#include <iostream>
using namespace std;
int main()
{
int zakres,j=1,k=2,m;
cin>>zakres;
int sito[zakres];
//1-liczba pierwsza 2-niepierwsza
for(int i=0; i<=zakres;i++)
sito[i]=j++; //wypelnienie tablicy liczbami z zakresu(1,zakres)
for(int i=0; i<zakres; i++) cout<<sito[i]<<" ";
cout<<endl;
//zalozenie Killavusa - kazdy element tablicy=0
for(int i=0; i<zakres; i++) sito[i]=0;
sito[0]=2;
for(int x=0; x<=zakres; x++)
{
if(sito[x]==0)sito[x]=1;
int l=2;
for(m=k; (m*l-1)<=zakres; l++)
sito[m*l-1]=2;
k=m;
k++;
}
for(int i=0; i<zakres; i++) cout<<sito[i]<<" ";
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBtYWluKCkKewogICAgaW50IHpha3JlcyxqPTEsaz0yLG07CiAgICBjaW4+Pnpha3JlczsKICAgIGludCBzaXRvW3pha3Jlc107CiAgICAvLzEtbGljemJhIHBpZXJ3c3phIDItbmllcGllcndzemEKICAgIGZvcihpbnQgaT0wOyBpPD16YWtyZXM7aSsrKQogICAgICAgIHNpdG9baV09aisrOyAvL3d5cGVsbmllbmllIHRhYmxpY3kgbGljemJhbWkgeiB6YWtyZXN1KDEsemFrcmVzKQoKICAgIGZvcihpbnQgaT0wOyBpPHpha3JlczsgaSsrKSBjb3V0PDxzaXRvW2ldPDwiICI7CiAgICBjb3V0PDxlbmRsOwogICAgLy96YWxvemVuaWUgS2lsbGF2dXNhIC0ga2F6ZHkgZWxlbWVudCB0YWJsaWN5PTAKICAgIGZvcihpbnQgaT0wOyBpPHpha3JlczsgaSsrKSBzaXRvW2ldPTA7CgogICAgc2l0b1swXT0yOwoKICAgIGZvcihpbnQgeD0wOyB4PD16YWtyZXM7IHgrKykKICAgIHsKICAgICAgICBpZihzaXRvW3hdPT0wKXNpdG9beF09MTsKICAgICAgICBpbnQgbD0yOwogICAgICAgIGZvcihtPWs7IChtKmwtMSk8PXpha3JlczsgbCsrKQogICAgICAgICAgICBzaXRvW20qbC0xXT0yOwogICAgICAgICAgICBrPW07CiAgICAgICAgaysrOwogICAgfQoKICAgIGZvcihpbnQgaT0wOyBpPHpha3JlczsgaSsrKSBjb3V0PDxzaXRvW2ldPDwiICI7CiAgICByZXR1cm4gMDsKfQo=