Sort:  

Thanks @belemo, it was a trip writing it!