Steven, the monkey, is baking banana bread today!

The recipe for banana bread calls for ingredients numbered from to . The recipe can be modelled as an array of length , where describes the amount for ingredient . Moreover, Steven's special banana bread recipe is a permutation of the first positive integers!

Unfortunately, Steven lost the recipe and doesn't remember the ordering!

Fortunately, Steven had sent his recipe to his friend Tony for safekeeping. However, being a monkey, Tony obfuscated the recipe and tells Steven that he can only ask for the number of inversions present in some subarray of array from to inclusive satisfying . Due to how impatient Tony is, he informs Steven that he can only ask up to questions. Help Steven recover the recipe so he can have dessert tonight!

A pair of indices and in the array is considered an inversion if and .

#### Constraints

Array is a permutation of the first positive integers.

#### Interaction

**This is an interactive problem.**

You will start by reading in a single integer , the number of ingredients in the bread.

**Note: The grader is NOT adaptive.**

After reading , you can start interacting with the interactor.

To ask a query, you must output in the form `? l r`

to standard output. You will then read a single integer from standard input, which is the number of inversions in the contiguous subarray from to .

To validate your final answer, you must output `!`

followed by a space, then space-separated numbers, which are the elements of the array . Your program should then terminate immediately.

The output must be **flushed after every line is printed, including the last line**. In C/C++, you can use `fflush(stdout)`

or `cout << endl`

, in Java you can use `System.out.flush()`

, and in Python you can use `sys.stdout.flush()`

.

**At any time, if you ask an invalid query or exceed queries, the interactor will print -1. Once you read -1, terminate your program immediately and you will receive a Wrong Answer verdict. Failure to terminate your program may result in an undefined result.**

#### Sample Interaction 1

Note: Do not actually print out `<<<`

and `>>>`

. `>>>`

means that the interactor printed out the line, and `<<<`

means that you printed out the line.

```
>>> 5
<<< ? 3 4
>>> 0
<<< ? 1 5
>>> 5
<<< ? 2 4
>>> 0
<<< ! 3 2 4 5 1
```

#### Explanation for Sample Interaction 1

Our array is and there are inversions. The pairs of indices that form inversions are .

#### Sample Interaction 2

```
>>> 3
<<< ? 1 2
>>> 0
<<< ! 1 2 3
```

## Comments