Universal Cup Judging System

Universal Cup

実行時間制限: 1 s メモリ制限: 1024 MB
統計

Ini adalah soal interaktif.

VegiCat mengetahui sebuah larik $a_1, a_2, \ldots, a_n$, yang setiap elemennya bernilai $0$, $1$, atau $2$. Ia tidak ingin memberi tahu Anda nilainya secara langsung, tetapi Anda dapat mengajukan pertanyaan kepadanya. Pada setiap kueri, Anda memilih dua indeks $i$ dan $j$, lalu VegiCat memberi tahu Anda apakah $a_i > a_j$.

VegiCat meminta Anda mengeluarkan indeks-indeks tersebut dalam urutan tak menurun berdasarkan nilai larik yang bersesuaian. Artinya, carilah sebuah permutasi $p_1, p_2, \ldots, p_n$ dari $1, 2, \ldots, n$ sedemikian sehingga

$$a_{p_1} \le a_{p_2} \le \cdots \le a_{p_n}.$$

problem_23599_9dab41a0c2d5e6c302cb4f2ad9a16799.png

Anda dapat melakukan paling banyak $2n - 3$ kueri pada setiap kasus uji.

Interaktor bersifat adaptif. Ini berarti larik tersebut tidak ditetapkan sejak awal. Interaktor menjamin bahwa selalu terdapat setidaknya satu larik dengan elemen-elemen di $\{0, 1, 2\}$ yang konsisten dengan semua respons yang telah diberikan sejauh ini. Permutasi akhir Anda harus valid untuk setiap larik yang konsisten dengan semua respons.

Masukan

Baris pertama berisi sebuah bilangan bulat $T$ ($1 \le T \le 250$), banyaknya kasus uji. Deskripsi dari setiap kasus uji menyusul.

Setiap kasus uji diawali dengan sebuah bilangan bulat $n$ ($2 \le n \le 500$), panjang larik.

Jumlah $n$ di seluruh kasus uji tidak melebihi $500$.

Interaksi

Untuk mengajukan sebuah kueri, keluarkan satu baris dengan format berikut:

? i j

Di sini, $1 \le i, j \le n$. Setelah setiap kueri, bacalah satu bilangan bulat:

  • $1$, jika $a_i > a_j$;
  • $0$, jika $a_i \le a_j$.

Kueri dengan $i = j$ serta kueri berulang diperbolehkan dan tetap dihitung dalam jumlah kueri.

Ketika Anda telah menentukan urutannya, keluarkan satu baris dengan format berikut:

! p_1 p_2 ... p_n

Setiap indeks dari $1$ hingga $n$ harus muncul tepat satu kali. Mencetak jawaban tidak dihitung sebagai kueri.

Jika jawaban Anda benar, lanjutkan ke kasus uji berikutnya dengan membaca nilai $n$-nya, atau hentikan program Anda jika ini adalah kasus uji terakhir. Interaktor tidak mengirimkan konfirmasi terpisah setelah sebuah jawaban.

Setelah mengeluarkan setiap kueri atau jawaban, keluarkan baris baru dan lakukan flush pada penyangga keluaran (output buffer). Untuk melakukan flush pada keluaran, Anda dapat menggunakan:

  • fflush(stdout) atau cout.flush() di C/C++;
  • System.out.flush() di Java dan Kotlin;
  • sys.stdout.flush() di Python.

Jika Anda melakukan kueri yang tidak valid, melebihi batas kueri, atau mencetak jawaban yang salah, Anda akan mendapatkan vonis Wrong Answer. Keluaran yang tidak mengikuti format yang ditentukan juga dinilai Wrong Answer. Dalam kasus-kasus ini, interaktor langsung berhenti tanpa mengirimkan respons kesalahan.

Examples

Input 1

2
3

1

1

2

0

Output 1


? 1 2

? 2 3

! 3 2 1

? 1 2

! 1 2

Note

Pada kasus uji pertama, kueri ? 1 2 dan ? 2 3 keduanya mengembalikan $1$, sehingga $a_1 > a_2 > a_3$. Oleh karena itu, $(3, 2, 1)$ adalah jawaban yang benar.

Pada kasus uji kedua, kueri ? 1 2 mengembalikan $0$, sehingga $a_1 \le a_2$. Oleh karena itu, $(1, 2)$ adalah jawaban yang benar.

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.