#include int days; void reverse(int pole[], int n) { int i = 0; int t; for (; i < n / 2; i++) { t = pole[i]; pole[i] = pole[n-1-i]; pole[n-1-i] = t; } /* printf("\n"); for (i = 0; i < days; i++) { printf("%d ", pole[i]); } printf("\n"); */ } int getact(int pole[], int n) { int i = 0; for (; i <= n; i++) if (pole[i] == n) return i; return -1; } int main() { scanf("%d", &days); while(days) { int vstup[days], vystup[days]; int i = 0; for (; i < days; i++) scanf("%d", &vstup[i]); for (i = 0; i < days; i++) scanf("%d", &vystup[i]); int index[days]; int j; for (i = 0; i < days; i++) for (j = 0; j < days; j++) if (vstup[i]==vystup[j]) index[i] = j; int act = days-1; int ga; int sw = 0; while(act>0) { if (index[act] != act) { if ((ga=getact(index, act)) != 0) { reverse(index, ga+1); if (ga > 0) { if (sw) printf(" "); printf("%d", ga+1); sw++; } } if (sw) printf(" "); printf("%d", act+1); sw++; reverse(index, act+1); } act--; } scanf("%d", &days); if (days) printf("\n"); } return 0; }