#include "insertion.c"

itemType aux[maxN];

/* include code */
void radixLSD(itemType a[], int l, int r)
  {
    int i, j, w, count[M+1]; 
 
       for (j = 0; j < M; j++) count[j] = 0;
        for (i = l; i <= r; i++) 
          count[((a[i] >> 16) & 255 ) + 1]++;
        for (j = 1; j < M; j++) 
          count[j] += count[j-1];
        for (i = l; i <= r; i++) 
          aux[count[((a[i] >> 16) & 255 )]++] = a[i];
        for (i = l; i <= r; i++) a[i] = aux[i];

        for (j = 0; j < M; j++) count[j] = 0;
        for (i = l; i <= r; i++) 
          count[((a[i] >> 24) & 255 ) + 1]++;
        for (j = 1; j < M; j++) 
          count[j] += count[j-1];
        for (i = l; i <= r; i++) 
          aux[count[((a[i] >> 24) & 255 )]++] = a[i];
        for (i = l; i <= r; i++) a[i] = aux[i];
  } 
/* end code */

void sort(itemType a[], int l, int r)
  { 
    radixLSD(a, l, r);
    insertion(a, l, r);
  }

