#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int p[200000];
int map[200000];
int test[200000];
void tisk(char *a,int *p,int N) {
    int i;
    printf("%s",a);
    for(i=0;i<N;i++) printf("%d ",p[i]);
    printf("\n");
}
void prehod(int *pp,int i,int j,int k,int ni,int nj,int nk) {
    int tmp1,tmp2,tmp3;
//    printf("prehazuji %d %d, %d %d, %d %d\n",i,ni,j,nj,k,nk);
    tmp1=pp[i];
    tmp2=pp[j];
    tmp3=pp[k];
    pp[ni]=tmp1;
    pp[nj]=tmp2;
    pp[nk]=tmp3;
}
int main(void) {
    int N,i,ano=1,k;
    
    scanf("%d",&N);
    while(N>0) {
	ano=1;
	for(i=0;i<N;i++) test[i]=0;
	for(i=0;i<N;i++) {
	    scanf(" %d ",&p[i]);
	    p[i]--;
	    map[p[i]]=i;
	    if (test[p[i]]>0) {
//		printf("problem %d %d\n",i,p[i]);
		ano=0;
	    }
	    test[p[i]]=1;
	}
	if (ano) {
    	    for(i=0;i<N-2;i++) {
//	    	tisk("pred:",p,N);
//		tisk("map:",map,N);
		
		if (p[i]==i) continue;
		if (map[i]==i+1) {
//		    printf("prvni\n");
		    k=map[i];
		    prehod(p,i+1,i,i+2,i,i+2,i+1);
		    map[p[i]]=i;
		    map[p[i+1]]=i+1;
		    map[p[i+2]]=i+2;
//		    prehod(map,[i+1],p[i],p[i+2],p[i],p[i+2],p[i+1]);
		}else{
		    k=map[i];
//		    printf("k >>> %d\n",k);
		    prehod(p,k,i,i+1,i,i+1,k);
//    	    	    prehod(map,k,i,i+1,i,i+1,k);
		    map[p[i]]=i;
		    map[p[i+1]]=i+1;
		    map[p[k]]=k;
		}
//	    	tisk("po:",p,N);
//		tisk("pomap:",map,N);
////	    	printf("na poz %d je %d na na nem je %d\n",i,p[i],p[p[i]]);
/*		if (p[p[i]]==i) {
//			printf("krok %d %d\n",i,p[i]);
		    ano=0;
		    break;
		}
		tmp=p[p[i]];
		p[p[i]]=p[i];
		if (tmp==i)  {
		    
		    tmp2=p[N-1];
		    p[N-1]=tmp;
		    p[i]=tmp2;
		} else {
		    tmp2=p[tmp];
		    p[tmp]=tmp;
		    p[i]=tmp2;
		}
		i--;
	    	tisk("po:",p,N);*/
		
		
		
	    }
	}
	if ((ano)&&(p[N-2]==N-2)&&(p[N-1]==N-1)) 
	    printf("Permutaci lze prevest.\n");
	else printf("Matfyzacci maji smulu.\n");
	scanf("%d",&N);
    }
    return 0;
}
