recursive puzzle box