from collections.abc import Iterable
def mid_first_order(n: int) -> Iterable[int]:
'''
Return the values in a "mid-first" order.
>>> list(mid_first_order(4))
[2, 1, 3, 0]
>>> list(mid_first_order(5))
[2, 3, 1, 4, 0]
>>> list(mid_first_order(6))
[3, 2, 4, 1, 5, 0]
'''
mid = n >> 1
for i in range(n):
if i & 1:
yield mid - ((i + 1) >> 1)
else:
yield mid + ((i + 1) >> 1)