#include <stdio.h>

void bubbleSort(int *, int);

int main() {
  int A[100];
  int N, i;
  
  scanf("%d", &N);
  for(i = 0; i < N; i++)
    scanf("%d", &A[i]);

  if(1<=N && N<=100)
    bubbleSort(A, N);// N 個の要素を含む 0-オリジンの配列 A

  return 0;
}

void bubbleSort(int *A, int N) 
{
  int flag;// 逆の隣接要素が存在する
  int temp, i, j, cnt=0;
  
  while(flag) {
    flag = 0;
    for (j = N-1; j >= 1; j--) {
      if (A[j] < A[j-1]) {
	temp = A[j];
	A[j] = A[j-1];
	A[j-1] = temp;
	cnt++;
	flag = 1;
      }
    }
  }
  for (i = 0; i < N; i++)
    printf("%d ", A[i]);
  printf("\n%d\n", cnt);
}

