public class DeterminantFinder
{
    private static boolean atLeastOneByOne(int[][] matrix)
    {
        return matrix != null && matrix.length > 0 && matrix[0].length > 0;
    }
    
    /**
     * Determines if the determinant is defined for matrix.
     * @return true if the determinant is defined, false otherwise
     */
    public static boolean determinantDefined(int[][] matrix)
    {
        return false; // TODO: implement
    }

    /**
     * Calculates the determinant of matrix, which must be a 2x2 matrix.
     * Precondition: matrix.length == 2 && matrix[0].length == 2 
     * @return the determinant
     */
    public static int findTwoByTwoDeterminant(int[][] matrix)
    {
        return -1; // TODO: implement
    }

    /**
     * Calculates a matrix identical to matrix with the specific row and column removed.
     * Precondition: rowToRemove >= 0 && rowTorRemove < matrix.length &&
     *      colToRemove >= 0 && colToRemove < matrix[0].length
     * @return a matrix identical to matrix without the specified row and column.
     */
    public static int[][] withoutRowAndColumn(int[][] matrix, int rowToRemove, int colToRemove)
    {
        return null; // TODO: implement
    }

    /**
     * Calculates the determinant of matrix.
     * Precondition: determinantDefined(matrix)
     * @return the determinant.
     */
    public static int findDeterminant(int[][] matrix)
    {
        return -1; // TODO: implement
    }
}
