#include
#include
typedef struct head
{
int *data;
int size;
int max;
}minhead;
minhead *create(int n)
{
minhead *s=(minhead*)malloc(sizeof(minhead));
s->data=(int*)malloc((n+1)*sizeof(int));
s->data[0]=-1000;
s->size=0;
s->max=n;
return s;
}
int isfull(minhead *s)
{
return(s->size==s->max);
}
void insert(minhead *s,int x) //插入最小堆
{
int i;
if(isfull(s))
printf("man");
i=++s->size;
for(;s->data[i/2]>x;i/=2)
s->data[i]=s->data[i/2];
s->data[i]=x;
}
void shuchu(minhead *s)
{
for(int i=1;i<=s->size;i++){
printf("%d ",s->data[i]);
}
}
int main()
{
minhead *s;
int n,m,i,x;
scanf("%d %d",&n,&m);
s=create(n);
for(i=0;idata[x]);
for(x/=2;x>0;x/=2){
printf(" %d",s->data[x]);
}
printf("n");
}
}