#include<iostream>
#include<vector>
using namespace std;
int N;
vector<int> ori;
vector<int> ans;
void dfs(int v){
if(v>N) return;
ans.push_back(ori[v]);
if(v*2>N&&v*2+1>N){ //叶子结点判断
for(int i=0;i<ans.size();i++){
if(i!=ans.size()-1)
printf("%d ",ans[i]);
else
printf("%d",ans[i]);
}
printf("\n");
return;
}
if(2*v+1<=N) {//右子树遍历
dfs(2*v+1);
ans.pop_back();
}
if(2*v<=N) {//左子树遍历
dfs(2*v);
ans.pop_back();}
}
int main(){
cin>>N;
ori.resize(N+1);
for(int i=1;i<N+1;i++)
cin>>ori[i];
dfs(1);
int flag=ori[1]>ori[2]?1:-1;
for(int i=1;i<N/2;i++){
int left=2*i;
int right=2*i+1<N?2*i+1:N;
if((flag==1&&(ori[left]>ori[i]||ori[right]>ori[i]))||(flag==-1&&(ori[left]<ori[i]||ori[right]<ori[i]))){
printf("Not Heap\n");
flag=0;
break;
}
}
if(flag==1)
printf("Max Heap\n");
else if(flag==-1)
printf("Min Heap\n");
return 0;
}