forked from: 15 puzzle