Given an array of strings `words` and a width `maxWidth`, format the text such that each line has exactly `maxWidth` characters and is **fully** (left and right) justified.
You should pack your words in a greedy approach — as many words as you can in each line. Pad extra spaces `' '` when necessary so that each line has exactly `maxWidth` characters.
Extra spaces between words should be distributed as evenly as possible. If the number of spaces on a line does not divide evenly between words, the empty slots on the left will be assigned more spaces. The last line of text should be left-justified, and no extra space is inserted between words.
**Example 1:**
```
Input: words = ["This","is","an","example","of","text","justification."], maxWidth = 16
Output: ["This is an","example of text","justification. "]
```
**Example 2:**
```
Input: words = ["What","must","be","acknowledgment","shall","be"], maxWidth = 16
Output: ["What must be","acknowledgment ","shall be "]
```