#include <stdio.h>
#define MaxN 5001

long n, k, a [MaxN], s [2 * MaxN];

void Input ()
{
	FILE *in;
	long i;

	in = fopen ("zad5.dat", "r");
	fscanf (in, "%ld", &n);
	for (i = 1; i <= n; i++)
		fscanf (in, "%ld", &a [i]);
	fclose (in);
}

void Output ()
{
	FILE *out;
	long i;

	out = fopen ("zad5.res", "w");
	fprintf (out, "%ld\n", k);
	for (i = 1; i <= k; i++)
		fprintf (out, "%ld\n", s [i]);
	fclose (out);
}

void Swap (long k)
{
	long i, tmp;

	for (i = 1; i <= k / 2; i++)
	{
		tmp = a [i];
		a [i] = a [k + 1 - i];
		a [k + 1 - i] = tmp;
	}
}

void Solve ()
{
	long i, max;

	k = 0;
	for (i = n; i >= 1; i--)
		if (a [i] != i)
		{
			max = 1;
			while ((max < i) && (a [max] != i))
				max++;
			if (max != 1)
			{
				k++;
				s [k] = max;
				Swap (max);
			}
			k++;
			s [k] = i;
			Swap (i);
		}
}

int main ()
{
	Input ();
	Solve ();
	Output ();
	return 0;
}
