#include #include void prehod (int *pole, int kolik) { int i; int temp; for (i = 0; i < kolik / 2; i++) { temp = pole[i]; pole[i] = pole[kolik - i - 1]; pole[kolik - i -1] = temp; } } int main() { while (1) { int bylo[30]; int zaloha[30]; int bude[30]; int jakjsme[60]; int N; int i; int operace = 0; scanf("%d", &N); if(!N) return 0; for(i = 0; i < N; i++) { scanf("%d", &bylo[i]); } getchar(); for(i = 0; i < N; i++) { scanf("%d", &bude[i]); } memcpy(zaloha,bylo,sizeof(int)*30); int aktual; for (i = N - 1; i >=1; i-- ) { aktual = bude[i]; int j; for (j = i; j > 0; j--) { if (bylo[j] == aktual) break; } if(j != i) { if(j > 0) { prehod(bylo,j+1); jakjsme[operace++] = j+1; } prehod(bylo,i+1); jakjsme[operace++] = i+1; } if (!memcmp (bylo, bude,sizeof(int)*N)) break; } if(operace > 52) { operace = 0; prehod(bude, N); memcpy(bylo,zaloha,sizeof(int)*N); for (i = N - 1; i >=1; i-- ) { aktual = bude[i]; int j; for (j = i; j > 0; j--) { if (bylo[j] == aktual) break; } if(j != i) { if(j > 0) { prehod(bylo,j+1); jakjsme[operace++] = j+1; } prehod(bylo,i+1); jakjsme[operace++] = i+1; } if (!memcmp (bylo, bude,sizeof(int)*N)) break; } jakjsme[operace++] = N; } for (i = 0; i < operace; i++) { printf("%d ",jakjsme[i]); } putchar('\n'); } }