#include <iostream>
#define MAXN 100005
using namespace std;
int N, A[MAXN], ans, Inversion[MAXN];
void swap(int i, int j)
{
int aux;
aux = A[Inversion[i]];
A[Inversion[i]] = A[i];
A[i] = aux;
}
void calcularInversiones(int izq, int der)
{
/*if(izq == der)
return;
int mid = (izq + der) / 2;
calcularInversiones(izq, mid);
calcularInversiones(mid + 1, der);
int indexIzq = izq;
int indexDer = mid + 1;
for(int i = izq; i <= der; i++)
{
if(indexIzq > mid) {
mem[i] = a[indexDer++];
}
else if(indexDer > der);
{
mem[i] = a[indexIzq++];
}
else if(a[indexIzq] <= a[indexDer])
{
mem[i] = a[indexDer++];
}
else if(a[indexIzq] > a[indexDer])
{
mem[i] = a[indexIzq++];
}
}*/
int before = 0;
for(int i = N; i >= 1; i--)
{
before = 0;
for(int j = i + 1; j <= N; j++)
{
if(A[i] > A[j] && A[i] > A[Inversion[j]])
{
Inversion[before] = 0;
//cout << A[i] << "-> " << A[j] << "\n";
Inversion[i] = j;
Inversion[j] = i;
before = j;
}
}
}
}
int main()
{
cin >> N;
for(int i = 1; i <= N; i++)
{
cin >> A[i];
}
for(int j = 0; j < N; j++)
{
calcularInversiones(1, N);
for(int i = 1; i <= N; i++)
{
//cout << i << ":" << Inversion[i] << "\n";
if(Inversion[i] > 0 && i < Inversion[i])
{
ans++;
swap(i, Inversion[i]);
}
Inversion[i] = 0;
}
}
cout << ans << "\n";
for(int i = 1; i <= N; i++)
cout << A[i] << " ";
cout << "\n";
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojZGVmaW5lIE1BWE4gMTAwMDA1CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmludCBOLCBBW01BWE5dLCBhbnMsIEludmVyc2lvbltNQVhOXTsKCnZvaWQgc3dhcChpbnQgaSwgaW50IGopCnsKCWludCBhdXg7CgoJYXV4ID0gQVtJbnZlcnNpb25baV1dOwoJQVtJbnZlcnNpb25baV1dID0gQVtpXTsKCUFbaV0gPSBhdXg7Cn0KCnZvaWQgY2FsY3VsYXJJbnZlcnNpb25lcyhpbnQgaXpxLCBpbnQgZGVyKQp7CgkvKmlmKGl6cSA9PSBkZXIpCgkJcmV0dXJuOwoKCWludCBtaWQgPSAoaXpxICsgZGVyKSAvIDI7CgljYWxjdWxhckludmVyc2lvbmVzKGl6cSwgbWlkKTsKCWNhbGN1bGFySW52ZXJzaW9uZXMobWlkICsgMSwgZGVyKTsKCglpbnQgaW5kZXhJenEgPSBpenE7CglpbnQgaW5kZXhEZXIgPSBtaWQgKyAxOwoJZm9yKGludCBpID0gaXpxOyBpIDw9IGRlcjsgaSsrKQoJewoJCWlmKGluZGV4SXpxID4gbWlkKSB7CgkJCW1lbVtpXSA9IGFbaW5kZXhEZXIrK107CgkJfQoJCWVsc2UgaWYoaW5kZXhEZXIgPiBkZXIpOwoJCXsKCQkJbWVtW2ldID0gYVtpbmRleEl6cSsrXTsKCQl9CgkJZWxzZSBpZihhW2luZGV4SXpxXSA8PSBhW2luZGV4RGVyXSkKCQl7CgkJCW1lbVtpXSA9IGFbaW5kZXhEZXIrK107CgkJfQoJCWVsc2UgaWYoYVtpbmRleEl6cV0gPiBhW2luZGV4RGVyXSkKCQl7CgkJCW1lbVtpXSA9IGFbaW5kZXhJenErK107CgkJfQoJfSovCgoJaW50IGJlZm9yZSA9IDA7Cglmb3IoaW50IGkgPSBOOyBpID49IDE7IGktLSkKCXsKCQliZWZvcmUgPSAwOwoJCWZvcihpbnQgaiA9IGkgKyAxOyBqIDw9IE47IGorKykKCQl7CgkJCWlmKEFbaV0gPiBBW2pdICYmIEFbaV0gPiBBW0ludmVyc2lvbltqXV0pCgkJCXsKCQkJCUludmVyc2lvbltiZWZvcmVdID0gMDsKCQkJCS8vY291dCA8PCBBW2ldIDw8ICItPiAiIDw8IEFbal0gPDwgIlxuIjsKCQkJCUludmVyc2lvbltpXSA9IGo7CgkJCQlJbnZlcnNpb25bal0gPSBpOwoJCQkJYmVmb3JlID0gajsKCQkJfQoJCX0KCX0KfQoKaW50IG1haW4oKQp7CgljaW4gPj4gTjsKCWZvcihpbnQgaSA9IDE7IGkgPD0gTjsgaSsrKQoJewoJCWNpbiA+PiBBW2ldOwoJfQoKCWZvcihpbnQgaiA9IDA7IGogPCBOOyBqKyspCgl7CgkJY2FsY3VsYXJJbnZlcnNpb25lcygxLCBOKTsKCQlmb3IoaW50IGkgPSAxOyBpIDw9IE47IGkrKykKCQl7CgkJCS8vY291dCA8PCBpIDw8ICI6IiA8PCBJbnZlcnNpb25baV0gPDwgIlxuIjsKCQkJaWYoSW52ZXJzaW9uW2ldID4gMCAmJiBpIDwgSW52ZXJzaW9uW2ldKQoJCQl7CgkJCQlhbnMrKzsKCQkJCXN3YXAoaSwgSW52ZXJzaW9uW2ldKTsKCQkJfQoJCQlJbnZlcnNpb25baV0gPSAwOwoJCX0KCX0KCgljb3V0IDw8IGFucyA8PCAiXG4iOwoJZm9yKGludCBpID0gMTsgaSA8PSBOOyBpKyspCgkJY291dCA8PCBBW2ldIDw8ICIgIjsKCWNvdXQgPDwgIlxuIjsKCXJldHVybiAwOwp9Cg==