#include<stdio.h>
#include<stdlib.h>
typedef struct heap* ph;
struct heap {
int* data;
int rear;
int capacity;};
ph CreatHeap(int N);voidInsertMin(ph H);voidPrint(ph H);
int main(){
int N;//n of data;
int M;//n of path needed printscanf("%d %d",&N,&M);
ph H=CreatHeap(N);
int i, flag =1;for(i =0; i <N; i++)InsertMin(H);for(i =0; i <M; i++){if(flag) flag =0;elseprintf("\n");Print(H);}return0;}
ph CreatHeap(int N){
ph H=(ph)malloc(sizeof(struct heap));H->capacity =N;H->data =malloc((N+1)*sizeof(int));H->rear =0;H->data[0]=-10001;returnH;}voidInsertMin(ph H){
int temp_data;scanf("%d",&temp_data);
int i;for(i =++H->rear;H->data[i /2]> temp_data; i /=2)H->data[i]=H->data[i /2];H->data[i]= temp_data;}voidPrint(ph H){
int flag =1, i;
int index;scanf("%d",&index);for(i = index; i >0; i/=2){if(flag) flag =0;elseprintf(" ");printf("%d",H->data[i]);}}