Calculate the size of the largest wing as normal, for completely packed parties.
Figure out how many blank spots there will be by:
for each party except the last one, where n is the number of delegates and r is the number of rows, the number of blank seats is r-(n mod r)
Now in theory I could have gone back to step 1, but then it could oscillate. Better to just extend the diagram as necessary.
Then, for the smaller wing, calculate the width based on this new length.
Do the same calculation for blank spots, and check whether it fits into the length.
If not, check whether we are already the same width as the larger wing. If so, just increase the length to fit. Otherwise, increase the width by one and try again.
Some users prefer having diagrams where no two parties share one column (or row, for the cross-bench). Provide option to force this.