Optimize my wings order This tweet lists the possible orders for Wings of a Chinese restaurant1:



When ordering Pizza I usually calculate what size gives me the best Pizza-price ratio which is a simple calculation. However minimizing the price of an order at this restaurant isn't such a simple task, so I'd like to be prepared for my next order there.

Challenge

Given an integer greater or equal to \$4\$, your task is to return one possible order which minimizes the price (overall cheapest) and the number of deals.

Example

If I were to order \$100\$ Wings, it turns out the best bargain will cost \$$111.20\$. However there are multiple orders which will cost that amount, namely:

[50,50],[25,25,50],[25,25,25,25]


Since the first order will use the least amount of deals (\$2\$) the result will be [50,50].

Rules


Input will be some integer \$n \geq 4\$
Output will be a list/array/... of order sizes that sum up to \$n\$ and minimize the order's price


you may choose to return all possible orders



Testcases

4 -&gt; [4]  (4.55)
23 -&gt; [23]  (26.10)
24 -&gt; [6,18],[9,15],[12,12]  (27.20)
31 -&gt; [6,25]  (34.60)
32 -&gt; [4,28],[6,26],[7,25]  (35.75)
33 -&gt; [4,29],[5,28],[6,27],[7,26],[8,25]  (36.90)
34 -&gt; [6,28],[9,25]  (38.00)
35 -&gt; [35]  (39.15)
125 -&gt; [125]  (139.00)
200 -&gt; [25,50,125]  (222.40)
201 -&gt; [26,50,125]  (223.55)
250 -&gt; [125,125]  (278.00)
251 -&gt; [26,50,50,125]  (279.15)
418 -&gt; [15,28,125,125,125],[18,25,125,125,125]  (465.20)
1001 -&gt; [26,50,50,125,125,125,125,125,125,125]  (1113.15)
12345 -&gt; [15,80,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125],[25,70,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125],[45,50,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125,125]  (13728.10)


Note: These testcases list all possible outputs including the price, you're only required to output one and you're not required to output the price!



1: You can find the data as a CSV here.
JavaScript (ES6), 123 bytes
Returns the order as a space-separated string.

f=n=&gt;n?(x=n&gt;128|n==125?125:n&gt;50?n&lt;54?25:n-70?302256705&gt;&gt;n-80&amp;n&gt;79&amp;n&lt;109?80:50:n:n-24&amp;&amp;n-49?n&lt;31|n%5&lt;1?n:25:9)+' '+f(n-x):''

Try it online!
How?
Given a number \$n\$ of wings, we recursively apply the following strategy.
High values: \$n&gt;128\$ or \$n=125\$
For high values, our best option is to buy \$125\$ wings. So that's what we're doing as long as \$n\$ is greater than or equal to \$129\$ or when \$n\$ is exactly equal to \$125\$.
We can't do that for \$125 &lt; n &lt; 129\$ because we'd be left with less than \$4\$ wings to buy, which is not possible.
Low values: \$n&lt;31\$
For \$n&lt;31\$, the best deal is to buy all remaining wings at once, except for \$n=24\$ which must be purchased as either \$2\times 12\$, \$18+6\$ or \$15+9\$. We arbitrarily buy \$9\$ wings in that case.
Range \$31 \le n \le 50\$
In this range, buying \$25\$ wings usually leads to an optimal order. But the following exceptions apply:

If \$n\$ is a multiple of \$5\$, we must buy all remaining wings at once.
If \$n=49\$, the best deals are \$40+9\$ and \$28+21\$. We arbitrarily buy \$9\$ wings in that case.

Range \$51 \le n \le 53\$
We can't buy \$50\$ wings in that range or we'll be left with less than \$4\$ wings. Our best option is to buy \$25\$ of them instead. (We could buy \$2\times26\$ wings for \$n=52\$, but buying \$25+27\$ is just as good.)
Range \$54 \le n \le 128\$ with \$n \neq 125\$
In this range, buying \$50\$ wings usually leads to an optimal order. But the following exceptions apply:

If \$n=70\$, we must buy all of them at once.

If \$n\$ is in \$\{80,86,89,92,98,105,108\}\$, we must buy \$80\$ wings. These values are encoded with the following bitmask, where the least significant bit is mapped to \$80\$ and the most significant one to \$108\$:
$$10010000001000001001001000001_{(2)} = 302256705_{(10)}$$