Given a non-negative integer up to $999\\,999\\,999$, write it in English.
The input number can be in any form other than English (though you'll typically want to use the native integer type of your language).
<s>When there are several variants of writing the number in English, you can choose whichever suits you more. For example, the input $120$ may give the output `one hundred twenty` or `one hundred and twenty`.</s>
The numbers must be formatted as follows:
* Two-digit numbers must be written with dashes where applicable e.g. `twenty-five`, not `twenty five`.
* powers of ten start with “one”, e.g. `one hundred`, not just `hundred`.
* The tens/ones part, if not zero, must be separated from the hundreds part with `and`, e.g. `two hundred and five`, not `two hundred five`.
* The above rules are applied also to the factors of thousand and million.
* moreover the global tens/ones part has bto be separated by `and` whenever *anything* larger is present, even if the hundreds part is missing.
* Adjacent words must be separated by a single space, or a single dash without space where applicable.
* Leading and/or trailing spaces are not allowed. However, if the result is printed, a single trailing newline (not preceded by any spaces) is allowed.
[Ungolfed reference implementation](https://tio.run/##hVTbbtswDH33V3ACCsRoijpO16LZ2h8J@pAudC1AkQtJbusN@/aUoi6xF2/Tg0VR1DkkdeTXwbWdXh@Pe2wA9YuStl3oclMADYO2Vw4eQIiCHbIBDY8PsKp4hKhJZIa4vo5BJVyCgINUSnZa5BOagjVcJKhz/BM4eSP@F5/KaWPEfEk7IIpz7x8JhWyo5t7u9H4@nZCLPeyU0v3B0s4WxE80nViC6DT6yb3zyrUGed10veFZvvHayg@e8A21N1C@tM4bWkYA759UEoZAlc64d1QBzbXSOAxez5Rt2SSTCLPpAdKCiaPtudmGJ2Z2QyyOmLQbMtMQeJJBJEOiGE4EQ4YfMvjgoRm73dnUZU8yvsBvo7uGCihiEr0p5u82wba93htk1CSWrJ7R9hxMvtNtkMMTqyGemBVDRl5MCurMmKrkGriaiWpns/m/ZIVHG7@471BPgUPjKIn07v71LkZFh2tHZXGuOySHLXBj4ArqqJFpP86S@EtdV4I6OyGOPxTXGx0Di6ND637sLAYVVktYLeGGvt66JbOmuf7qHbV303V4x/qGXTySQQfvqnodPKtqVVc1ue7T8KIkPQMl84wGpIZMzQW8GqndohG/QsDm8f43STr/OthZlsXxEw)
Test cases:
```
0 zero
1 one
4 four
10 ten
16 sixteen
42 forty-two
125 one hundred and twenty-five
1024 one thousand and twenty-four
1100 one thousand one hundred
12345 twelve thousand three hundred and forty-five
1000000 one million
1000001 one million and one
7023000 seven million twenty-three thousand
11012021 eleven million twelve thousand and twenty-one
999999999 nine hundred and ninety-nine million nine hundred and ninety-nine thousand nine hundred and ninety-nine
```