#include <cstdio>
#include <cstdlib>
int stack[30];
int stackCnt;
int sorted[30];
int compare (const void * a, const void * b)
{
return ( *(int*)a - *(int*)b );
}
void flip(int place)
{
int tmp;
for (int i = 0; i <= place/2; ++i)
{
tmp = stack[i];
stack[i] = stack[place-i];
stack[place-i] = tmp;
}
}
int main()
{
int pancake;
char c;
while (true)
{
stackCnt = 0;
c = 0;
while (scanf("%d%c", &pancake, &c) == 2 && c != '\n')
{
stack[stackCnt++] = pancake;
printf("%d ", pancake);
}
if (c == '\n')
{
stack[stackCnt++] = pancake;
printf("%d\n", pancake);
}
else
break;
// copy stack
for (int i = 0; i < stackCnt; ++i)
sorted[i] = stack[i];
qsort(sorted, stackCnt, sizeof(int), compare);
// najit umisteni aktualne nejvetsi palacinky
// 1. pokud je vespod pokracuj
// 2. pokud je na vrchu, prehod ji na misto
// 3. jinak ji prehod na vrsek a pokracuj bodem 2
for (int i = stackCnt - 1; i; --i)
{
if (sorted[i] == stack[i])
continue;
else if (sorted[i] == stack[0])
{
printf("%d ", stackCnt - i);
flip(i);
}
else
{
int j;
for (j = 0; stack[j] != sorted[i]; ++j);
printf("%d ", stackCnt - j);
flip(j);
++i;
}
}
printf("0\n");
}
return 0;
}