#include<bits/stdc++.h>
using namespace std;
vector<int> tempstep;
int n;
bool insertjudge(vector<int> &a){
int flag=0;
for(int i=1;i<n;i++){
if(i!=1&&a==tempstep){
flag=1;
}
int temp=a[i];int j=i;
/*for(int j=i;j>=0;j--){
if(a[j-1]>temp){
a[j]=a[j-1];
}else{
a[j]=temp;
}
}*/
while(j>0&&a[j-1]>temp){
a[j]=a[j-1];
j--;
}
a[j]=temp;
if(flag==1){
return true;
}
}
if(flag==0) return false;
}
void merge(vector<int> &a){
int flag=0;
for(int step=2;step/2<n;step*=2){
if(step!=2&&a==tempstep){
flag=1;
}
for(int i=0;i<n;i+=step){
sort(a.begin()+i,a.begin()+min(i+step,n));
}
if(flag==1) return;
}
}
int main()
{
freopen("in.txt","r",stdin);
cin>>n;vector<int> initial;initial.resize(n);
for(int i=0;i<n;i++){
cin>>initial[i];
}
tempstep.resize(n);
for(int i=0;i<n;i++){
cin>>tempstep[i];
}
vector<int> ppp=initial;
if(insertjudge(ppp)==true){
cout<<"Insertion Sort"<<endl;
cout<<ppp[0];
for(int i=1;i<n;i++){
cout<<' '<<ppp[i];
}
}else{
vector<int> ppp1=initial;
cout<<"Merge Sort"<<endl;
merge(ppp1);
cout<<ppp1[0];
for(int i=1;i<n;i++){
cout<<' '<<ppp1[i];
}
}
return 0;
}