Universal Cup Judging System

Universal Cup

時間限制: 1 s 記憶體限制: 1024 MB
统计

זוהי בעיה אינטראקטיבית.

VegiCat יודע מערך $a_1, a_2, \ldots, a_n$, שבו כל איבר הוא $0$, $1$ או $2$. הוא אינו רוצה לגלות לכם את ערכיו, אך תוכלו לשאול אותו שאלות. בכל שאילתה אתם בוחרים שני אינדקסים $i$ ו-$j$, ו-VegiCat אומר לכם האם $a_i > a_j$.

VegiCat מבקש מכם להדפיס את האינדקסים בסדר לא-יורד (nondecreasing) של ערכי המערך המתאימים. כלומר, מצאו תמורה $p_1, p_2, \ldots, p_n$ של $1, 2, \ldots, n$ כך שמתקיים

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

problem_23599_9dab41a0c2d5e6c302cb4f2ad9a16799.png

ניתן לבצע לכל היותר $2n - 3$ שאילתות בכל מקרה בדיקה.

האינטראקטור הוא אדפטיבי (adaptive). משמעות הדבר היא שהמערך אינו קבוע מראש. האינטראקטור מבטיח שתמיד קיים לפחות מערך אחד שאיבריו מתוך $\{0, 1, 2\}$ העקבי עם כל התשובות שניתנו עד כה. התמורה הסופית שלכם חייבת להיות תקפה עבור כל מערך העקבי עם כל התשובות.

קלט

השורה הראשונה מכילה מספר שלם $T$ ($1 \le T \le 250$), מספר מקרי הבדיקה. אחריה מופיע תיאור מקרי הבדיקה.

כל מקרה בדיקה מתחיל במספר שלם $n$ ($2 \le n \le 500$), אורך המערך.

סכום ערכי $n$ על פני כל מקרי הבדיקה אינו עולה על $500$.

אינטראקציה

כדי לבצע שאילתה, הדפיסו שורה בפורמט הבא:

? i j

כאן $1 \le i, j \le n$. לאחר כל שאילתה, קראו מספר שלם אחד:

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

שאילתות עם $i = j$ ושאילתות חוזרות מותרות ונכללות בספירת השאילתות.

כאשר קבעתם את הסדר, הדפיסו שורה בפורמט הבא:

! p_1 p_2 ... p_n

כל אינדקס מ-$1$ עד $n$ חייב להופיע בדיוק פעם אחת. הדפסת התשובה אינה נספרת כשאילתה.

אם תשובתכם נכונה, המשיכו למקרה הבדיקה הבא על ידי קריאת ה-$n$ שלו, או סיימו את התוכנית אם זה היה מקרה הבדיקה האחרון. האינטראקטור אינו שולח אישור נפרד לאחר תשובה.

לאחר הדפסת כל שאילתה או תשובה, הדפיסו ירידת שורה ורוקנו את חוצץ הפלט (flush). כדי לרוקן את הפלט, ניתן להשתמש ב:

  • fflush(stdout) או cout.flush() ב-C/C++;
  • System.out.flush() ב-Java וב-Kotlin;
  • sys.stdout.flush() ב-Python.

אם תבצעו שאילתה לא חוקית, תחרגו ממגבלת השאילתות או תדפיסו תשובה שגויה, תקבלו פסק דין Wrong Answer. גם פלט שאינו עוקב אחר הפורמט המוגדר יישפט כ-Wrong Answer. במקרים אלו, האינטראקטור מסיים את פעולתו ללא שליחת הודעת שגיאה.

Examples

Input 1

2
3

1

1

2

0

Output 1


? 1 2

? 2 3

! 3 2 1

? 1 2

! 1 2

Note

במקרה הבדיקה הראשון, השאילתות ? 1 2 ו-? 2 3 שתיהן מחזירות $1$, ולכן $a_1 > a_2 > a_3$. לפיכך, $(3, 2, 1)$ היא תשובה נכונה.

במקרה הבדיקה השני, השאילתה ? 1 2 מחזירה $0$, ולכן $a_1 \le a_2$. לפיכך, $(1, 2)$ היא תשובה נכונה.

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.