#include<stdio.h>
#include<stdlib.h>
typedef struct heap* ph;
struct heap {
int* data;
int capable;
int size;};
ph Creatheap(int N);voidInsertMinHeap(ph H);voidPrintPath(ph H);
int main(){
int N;//n of nodes of heap
int M;//n of index as casescanf("%d %d",&N,&M);
ph H=Creatheap(N);
int i, flag=1;for(i =0; i <N; i++)InsertMinHeap(H);for(i =0; i <M; i++){if(flag) flag =0;elseprintf("\n");PrintPath(H);}return0;}
ph Creatheap(int N){
ph H=(ph)malloc(sizeof(struct heap));H->capable =N;H->data =malloc((N+1)*sizeof(int));H->data[0]=-10001;H->size =0;returnH;}voidInsertMinHeap(ph H){
int temp_data;scanf("%d",&temp_data);
int i;for(i =++H->size;H->data[i /2]> temp_data; i /=2)H->data[i]=H->data[i /2];H->data[i]= temp_data;}voidPrintPath(ph H){
int index;scanf("%d",&index);
int i = index, flag =1;while(i >0){if(flag) flag =0;elseprintf(" ");printf("%d",H->data[i]);
i /=2;}}