private void splitIntoQuadrants(int startx, int endx, int starty, int endy) {
        int halfLength = Math.abs(starty - endy) / 2;

        for (int i = startx + halfLength; i < endx; i++)
            for (int j = starty + halfLength; j < endy; j++)
                board[i][j] += "4";

        for (int i = startx + halfLength; i < endx; i++)
            for (int j = starty; j < starty + halfLength; j++)
                board[i][j] += "3";
        
        for (int i = startx; i < startx + halfLength; i++)
            for (int j = starty; j < starty  + halfLength; j++)
                board[i][j] += "2";
        
        for (int i = startx; i < startx + halfLength; i++)
            for (int j = starty + halfLength; j < endy; j++)
                board[i][j] += "1";
        
        if (halfLength != 2) { // base case
            splitIntoQuadrants(startx, startx  + halfLength, starty, starty + halfLength);
            splitIntoQuadrants(startx + halfLength, endx, starty + halfLength, endy);
            splitIntoQuadrants(startx, startx + halfLength, starty + halfLength, endy);
            splitIntoQuadrants(startx + halfLength, endx, starty, starty + halfLength);
        }
    }