I used css grid to output the exact structure of the element which is shown in the image. Only thing that is missing is the lines as you see in the image below. Most important thing is that the code is concise, clean and DRY. I was thinking about using pseudo-element, only it will not help to write readable code.
.three {
display: grid;
grid-template-rows: repeat(7, 100px);
grid-template-columns: repeat(3, 1fr);
grid-gap: 1em;
grid-template-areas:
". C ."
". . B-1"
"A B B-2"
". . B-3"
". D ."
". E .";
}
.A { grid-area: A; }
.B { grid-area: B; }
.C { grid-area: C; }
.D { grid-area: D; }
.E { grid-area: E; }
.B-1 { grid-area: B-1; }
.B-2 { grid-area: B-2; }
.B-3 { grid-area: B-3; }
.unordered-list {
background-color: lightgreen;
list-style-type: none;
display: flex;
justify-content: center;
align-items: center;
}
<ul class="three">
<li class="unordered-list A">A</li>
<li class="unordered-list B">B</li>
<li class="unordered-list C">C</li>
<li class="unordered-list D">D</li>
<li class="unordered-list E">E</li>
<li class="unordered-list B-1">B-1</li>
<li class="unordered-list B-2">B-2</li>
<li class="unordered-list B-3">B-3</li>
</ul>
