//  Ces programmes sont sous licence CeCILL-B V1.

void fusion (int[] tab, int x, int n, int y, int p, int tab1 []int i) {
  if (x <= n && (y > p  || tab[x< tab[y])) {
	tab1[i= tab[x]
	fusion(tab, x+1, n, y, p, tab1, i+1);
  else if (y <= p) {
	tab1[i= tab[y]
	fusion(tab, x, n, y+1, p, tab1, i+1);
  }
}

void tri (int[] tab, int n, int p) {
  int k, i;
  int [] tab1;
  if (n < p) {
	k = (n + p)/2;
	tri(tab, n, k);
	tri(tab, k+1, p);
	tab1 = new int [p+1];
	fusion(tab, n, k, k+1, p, tab1, n);
	for (i = n; i <= p; i = i + 1) {
	  tab[i= tab1[i];
	}
  }
}
 
void main () {
  int i;
  int [] tab;
  tab = new int [16]
  for (i = 0; i <= 15; i = i + 1) {
	tab[i(intMath.floor(Math.random() 1000);
  }
  for (i = 0; i <= 15; i = i + 1) {
	print(tab[i]);
	print(" ");
  }
  println();
  tri(tab, 015);
  for (i = 0; i <= 15; i = i + 1) {
	print(tab[i]);
	print(" ");
  }
  println();
}