#include <iostream>
using namespace std;
struct note
{
int data;
note *next;
};
class listprime
{
private:
note *head;
public:
listprime(int n);
void Delete( note *p);
void scan();
void print();
~listprime();
};
listprime::~listprime() //清理
{
note *p=head;
while(p)
{
note *q=p;
p=p->next;
delete q;
}
head =NULL;
}
listprime::listprime(int n) //建立空链表
{
head=new note;
head->next=NULL;
note *t;
for(int i=0;i<n;i++)
{
t=new note;
t->data=n-i;
t->next=head->next;
head->next=t;
}
}
void listprime::print() //输出
{
note *hp=new note;
hp=head->next;
while(hp)
{
if(hp->data!=1)
cout<<hp->data<<" ";
hp=hp->next;
}
cout<<endl;
}
void listprime::scan()
{
note *p=new note;
p=head->next->next;
while(p)
{
Delete(p);
p=p->next;
}
}
void listprime::Delete( note *p) //筛选
{
note *q=p;
note *t=NULL;
while(q->next)
{
if(p->next&& (q->next->data)%(p->data)==0)
{
t=q->next;
q->next=q->next->next;
delete t;
}
else
q=q->next;
}
}
int main()
{
int n;
cin>>n;
listprime prime(n);
prime.scan();
prime.print();
return 0;
}