![AC](https://i-blog.csdnimg.cn/blog_migrate/00b602a764b0fc5b9fd2771327ed8d36.png)
#include <stdio.h>
#include <stdlib.h>
int cmp(const void *a,const void *b) {
return *(int *)a - *(int *)b;
}
int main() {
int N;
scanf("%d", &N);
int arr[2][N];
for (int i = 0; i < 2; i++) {
for (int j = 0; j < N; j++) {
scanf("%d", &arr[i][j]);
}
}
int cnt_order = 1;
for (int i = 0; arr[1][i] <= arr[1][i+1] && i < N - 1; i++) {
cnt_order++;
}
int isInsert = 1;
for (int i = cnt_order; i < N; i++) {
if (arr[0][i] != arr[1][i]) {
isInsert = 0;
break;
}
}
if (isInsert) {
printf("Insertion Sort\n");
qsort(arr[0], ++cnt_order, sizeof(int), cmp);
} else {
printf("Merge Sort\n");
int k = 1, flag = 1;
while(flag) {
flag = 0;
for (int i = 0; i < N; i++) {
if (arr[0][i] != arr[1][i]) {
flag = 1;
break;
}
}
k *= 2;
int i;
for (i = 0; i < N / k; i++) {
qsort(arr[0]+ i * k, k, sizeof(int), cmp);
}
qsort(arr[0]+ i * k, N - i * k, sizeof(int), cmp);
}
}
for(int i = 0; i < N-1; i++) {
printf("%d ", arr[0][i]);
}
printf("%d\n", arr[0][N-1]);
return 0;
}