Forget about static min.
This means: start with 1GiB (dynamic min is memory on boot basically). You can balloon up to 4GiB while running (by changing dynamic min to 4GiB), and go down again to 1GiB by set again dynamic min to 1GiB => dynamic is your "live" range.
You can change the dynamic max (while the VM is running) up to 5GiB.
Ballooning will change the amount dynamically (if needed) inside your 1GiB->4GiB range while live.
But frankly, stick with static memory in general (having dynamic min == dynamic max == static max), this will solve a lot of headaches.