http://bertrandmeyer.com/2013/10/13/hungarian-rotation/