#include #include int values[100005]; int pointers[100005]; int next = 1; int in_place = 0; int solve(int cnt) { for( int i=1; i<=cnt; i++) { scanf("%d", &values[i]); pointers[values[i]] = i; } for( int i = 1; i <= cnt; i++) { //printf("%d:", i); if(values[i] == i) { // printf(" in place, %d == %d\n", values[i], i); continue; // in place } int a_ptr = pointers[i]; // where the number is int b_ptr = i; int c_ptr = values[i]; //printf(" a_ptr=%d, b_ptr=%d, c_ptr=%d\n", a_ptr, b_ptr, c_ptr); if( a_ptr == b_ptr || a_ptr == c_ptr || b_ptr == c_ptr) return 0; pointers[values[c_ptr]] = a_ptr; values[a_ptr] = values[c_ptr]; pointers[values[b_ptr]] = c_ptr; values[c_ptr] = values[b_ptr]; pointers[i] = b_ptr; values[b_ptr] = i; } return 1; } int main() { int vstup; for(;;) { scanf("%d\n", &vstup); if(vstup == 0) break; if(solve(vstup)) { printf("Permutaci lze provest.\n"); } else { printf("Matfyzacci maji smulu.\n"); } } return 0; }