You are given an identifier S made up only of ASCII letters (upper and lower case). Split it into words using these boundary rules, then print the words in order, all lowercase, separated by single spaces:
- A word boundary occurs immediately before an uppercase letter that is directly preceded by a lowercase letter (for example,
get|Value). - Within a run of two or more consecutive uppercase letters (an acronym), a boundary occurs immediately before the LAST uppercase letter of that run, but only if that letter is directly followed by a lowercase letter (for example, in
HTTPResponsethe run isHTTPR, and since theRis followed by lowercasee, the boundary falls right before theR:HTTP|Response). If the run is not followed by a lowercase letter (e.g. it runs to the end ofS), it stays merged as one word. - No other boundaries occur.
Input format
Line 1: the identifier S.
Output format
The words of S, all lowercase, separated by single spaces, on one line.
Constraints
- 1 ≤ length of
S≤ 60 Sconsists only of ASCII letters (a-z,A-Z)