https://coliru.stacked-crooked.com/a/d75446e6ac54db42
https://coliru.stacked-crooked.com/a/866dc2bcdd0eac15