  free(A);
  return 0;
}

void BubbleSort(char **A,int N){
  int i,j,*B,n;
  char keep[2];
  B=(int*)malloc(sizeof(int)*N);
  for(i=0;i<N;i++)
    B[i]=A[i][1]-48;
  for(j=0;j<N;j++){
    for(i=N-1;i>0;i--){
      if(B[i]<B[i-1]){
	n=B[i];
	B[i]=B[i-1];
	B[i-1]=n;
	keep[0]=A[i][0];
	A[i][0]=A[i-1][0];
	A[i-1][0]=keep[0];
	keep[1]=A[i][1];
	A[i][1]=A[i-1][1];
	A[i-1][1]=keep[1];
      }
    }
  }
  for(i=0;i<N;i++){
    printf("%c%c",A[i][0],A[i][1]);
    if(i<N-1)
      printf(" ");
  }
  free(B);
  printf("\n");
  printf("Stable\n");
    }

void SelectionSort(char **A,int N){
  int i,j,*B,n,minj;
  char keep[2];
  B=(int*)malloc(sizeof(int)*N);
  for(i=0;i<N;i++)
    B[i]=A[i][1]-48;
  for(i=0;i<N;i++){
    minj=i;
    for(j=i;j<N;j++){
      if(B[j]<B[minj]){
	minj=j;
      }
    }
    if(i!=minj){
      n=B[i];
      B[i]=B[minj];
      B[minj]=n;
      keep[0]=A[i][0];
      A[i][0]=A[minj][0];
      A[minj][0]=keep[0];
      keep[1]=A[i][1];
      A[i][1]=A[minj][1];
      A[minj][1]=keep[1];
    }
  }
    free(B);
}