Given a matrix of `m x n`

elements, where `m`

is the number of rows and `n`

is the number of columns. Write a program to return all elements of the matrix in spiral order.

**Example 1**

```
Input:
[
[1, 2],
[3, 4]
]
Output: [1, 2, 4, 3]
Explanation: In the above example, the elements of first row i.e., [1, 2] are taken first in the output, then in continuity the 2nd column remaining element is taken i.e. [4], and then in continuity the 2nd row remaining element is taken i.e., [3]. Thus, we get [1, 2, 4, 3] as output.
```

**Example 2**

```
Input:
[
[5, 8, 3],
[3, 8, 6],
[4, 7, 3]
]
Output: [5, 8, 3, 6, 3, 7, 4, 3, 8]
Explanation: In the above example, the elements of first row i.e., [5, 8, 3] are taken first in the output, then in continuity the 3rd column remaining elements are taken i.e. [6, 3], then in continuity the 3rd row elements are taken i.e., [7, 4], and at last in continuity the remaining elements of the 2nd row are taken i.e., [3, 8]. Thus, we get [5, 8, 3, 6, 3, 7, 4, 3, 8] as output.
```