#include<iostream>
#include<vector>
using namespace std;
vector<int> v;
int M,N;
void postOrder(int index){
if(index>=N) return;
postOrder(2*index+1);
postOrder(2*index+2);
printf("%d%s",v[index],index==0?"\n":" ");
}
int main(){
scanf("%d%d",&M,&N);
v.resize(N);
for(int i=0;i<M;i++){
for(int j=0;j<N;j++)
scanf("%d",&v[j]);
int flag=v[0]>v[1]?1:-1;
for(int j=0;j<N/2;j++){
int left=2*j+1;
int right=2*j+2<N?2*j+2:2*j+1;//右结点可能不存在
if(((v[j]>v[left]||v[j]>v[right])&&flag==-1)||((v[j]<v[left]||v[j]<v[right])&&flag==1)){
printf("Not Heap\n");
flag=0;
break;
}
}
if(flag==1) printf("Max Heap\n");
if(flag==-1) printf("Min Heap\n");
postOrder(0);
}
return 0;
}