#include #include int *pole1,*pole2; int n; void prehod(int a,int b,int c){ int c1,c2,c3; c1=pole1[a]; c2=pole1[b]; c3=pole1[c]; pole1[a]=c2; pole1[b]=c3; pole1[c]=c1; pole2[c1]=c; pole2[c2]=a; pole2[c3]=b; } void test(void){ int j; for (j=1;j<=(n-2);j++){ if (pole1[j]!=j){ if (pole2[j]==n) {prehod (j,pole2[j],n-1);} else {prehod (j,pole2[j],n);}; } } } int main(void) { int i,pom; scanf("%d", &n); while (n!=0){ pole1=malloc((n+1)*sizeof(int)); pole2=malloc((n+1)*sizeof(int)); for (i=1;i<=n;i++){ scanf("%d",&pom); pole1[i]=pom; pole2[pom]=i; } test(); if (pole1[n]==n){ printf("Permutaci lze provest.\n"); } else{ printf("Matfyzacci maji smulu.\n"); } scanf("%d", &n); } return(0); }