#include <bits/stdc++.h>
using namespace std;
vector<int> v;
int flag_heap=0;
vector<int> ans;
void dfs(int root){
ans.push_back(root);
if((root*2+1)>=v.size() && (root*2+2)>=v.size()){//叶子
for(int i=0;i<ans.size();i++){
printf("%s%d",i==0?"":" ",v[ans[i]]);
}
printf("\n");
}
if((root*2+2)<v.size()){
dfs(root*2+2);
if(v[root]<=v[root*2+2] && flag_heap==-1) ;
else if(v[root]>=v[root*2+2] && flag_heap==1) ;
else flag_heap=0;
}
if((root*2+1)<v.size()){
dfs(root*2+1);
if(v[root]<=v[root*2+1] && flag_heap==-1) ;
else if(v[root]>=v[root*2+1] && flag_heap==1) ;
else flag_heap=0;
}
ans.pop_back();
}
int main(){
int n;
scanf("%d",&n);
v.resize(n);
int max_v=INT_MIN,min_v=INT_MAX;
for(int i=0;i<n;i++){
scanf("%d",&v[i]);
if(v[i]>max_v) max_v=v[i];
if(v[i]<min_v) min_v=v[i];
}
if(v[0]==max_v) flag_heap=1;
else if(v[0]==min_v) flag_heap=-1;
else flag_heap=0;
dfs(0);
if(flag_heap==1) printf("Max Heap\n");
else if(flag_heap==-1) printf("Min Heap\n");
else printf("Not Heap\n");
return 0;
}
//判断是否是堆
int isMin = 1, isMax = 1;
for (int i = 2; i <= n; i++) {
if (a[i/2] > a[i]) isMin = 0;
if (a[i/2] < a[i]) isMax = 0;
}
if (isMin == 1)
printf("Min Heap");
else
printf("%s", isMax == 1 ? "Max Heap" : "Not Heap");