puzzles added by Szymon Weirauch