template <class T>
inline void Swap(T& x, T& y) {
  T tmp = x;
  x = y; y = tmp;
}
template <class T>                  // Quicksort-Template
void quicksort(T v[], int n) {      // cf. K&R, p.87
  if(n <= 1)
    return;
  int last = 0;
  for (int i = 1; i < n; i++)
    if (v[0] > v[i])
      Swap(v[++last], v[i]);
  Swap(v[0],v[last]);
  quicksort(v, last);
  quicksort(v+last+1, n-last-1);
}
