public static function solve(array $sudoku, $checkInput = false)
    {
        if($checkInput && !self::checkInput($sudoku))
        {
            throw new \InvalidArgumentException('The input is no valid Sudoku array.');
        }

        return self::recursive_solve($sudoku, count($sudoku));
    }