<!DOCTYPE html>
<html>
<style>
ul {
display: flex;
flex-direction: column;
flex-wrap: wrap;
align-content: flex-start;
list-style: none;
margin: 0;
padding: 0;
}
li {
background: gray;
width: 5em;
height: 5em;
margin: .5em;
}
</style>
<body>
<ul style="height: 30em;">
<li>item 1</li>
<li>item 2</li>
<li>item 3</li>
<li>item 4</li>
<li>item 5</li>
<li>item 6</li>
<li>item 7</li>
<li>item 8</li>
<li>item 9</li>
<li>item 10</li>
</ul>
</body>
</html>
Добавляешь в список новый элемент.
Меняешь высоту из расчета
округленное_вверх ( кол-во элементов / 2) * высоту блока