#include<iostream>

using namespace std;
int pole[] = {3,42,13,41,12,4,58,23} ;
int pom[8];

void Mergesort(int zac, int kon) {
  int stred, i, j, k;
  stred = (zac + kon) / 2;
  if (zac < stred) Mergesort(zac,stred);
  if (stred + 1 < kon) Mergesort(stred+1, kon);
  i = zac;
  j = stred + 1;
  k = zac;
  while ((i <= stred) && (j <= kon)) {
    if (pole[i] < pole[j]) pom[k] = pole[i++];
    else {
      if (pole[i] == pole[j]) {
        if (pole[i] < pole[j]) pom[k] = pole[i++];
   else pom[k] = pole[j++];
      }
      else pom[k] = pole[j++];
    }
    k++;
  }
  while (i <= stred) {
    pom[k] = pole[i++];
    k++;
  }
  while (j <= kon) {
    pom[k] = pole[j++];
    k++;
  }
  for (k = zac; k <= kon; k++) pole[k] = pom[k];
}


void main()
{
   for(int j=0; j<8;j++)
   cout<<pole[j]<<" ";
   cout<<endl;

   Mergesort(0,7);

   for (int i=0; i<8; i++)
   cout<<pole[i]<<" ";
   cout<<endl;
}