List* merge(List* Head, List* Tail) {
  if (!Head) return Tail;
  if (!Tail) return Head;
  if (Head->car < Tail->car) return cons(Head->car, merge(Head->cdr, Tail));
  else return cons(Tail->car, merge(Head, Tail->cdr));
}


List* sort(List* List, int len) {
  if (len == 1) {
    List->cdr = NULL;
    return List;
  }
  int len2 = len/2;
  int len1 = len - len2;
  return merge(sort(List,len1), sort(nth_cdr(List,len1), len2));
}


재귀 개꿀 ㅎ