http://www.ep.tc/problems/fifteen/index.html