private int[][] initSubMatrix(final int[][] origin, int iStart, int iEnd, int jStart, int jEnd) {
        int[][] subMatrix = new int[iEnd - iStart][jEnd - jStart];
        for (int i = iStart; i < iEnd; ++i)
            for (int j = jStart; j < jEnd; ++j)
                subMatrix[i-iStart][j-jStart] = origin[i][j];

        return subMatrix;
    }