AT_arc226_d [ARC226D] Penta-Queue
Description
この問題は**インタラクティブな問題**(あなたの作成したプログラムとジャッジが入出力を介して対話を行う形式の問題)です。
$ 1 $ から $ 5 $ までの番号がついた $ 5 $ 本のキューがあります。 はじめ、全てのキューは空です。
ジャッジから、以下の $ 2 $ 種類のクエリがそれぞれ $ Q $ 回、合計 $ 2Q $ 回与えられます。
- **push クエリ**:ジャッジから整数 $ X $ が与えられ、キュー $ 1 $ の末尾に追加される。各 push クエリで与えられる整数 $ X $ は全て相異なる。あなたはその後、以下の移動操作を $ 0 $ 回以上行うことができる。
- **移動操作**: $ 1 \le i,j \le 5 $ を満たす整数 $ i,j $ を選び、キュー $ i $ の先頭の値を取り除いてキュー $ j $ の末尾に追加する。ただし、空のキューを $ i $ として選ぶことはできない。 $ i\ne j $ である必要はない。
- **pop クエリ**:ジャッジは、 $ 1 $ 本以上のキューが空でない状態でのみこのクエリを与える。あなたは $ 1 \le i \le 5 $ を満たす整数 $ i $ を選ぶ。このとき、キュー $ i $ は空でなく、その先頭の値が、その時点で $ 5 $ 本のキューに入っている全ての値のうち最小でなければならない。その後、ジャッジがキュー $ i $ の先頭の値を取り除く。
移動操作は合計で $ 10^5 $ 回までしか行えません。 全てのクエリに正しく応答するプログラムを作成してください。
### Input & Output Format
この問題はインタラクティブな問題です。
まず、ジャッジから正整数 $ Q $ が以下の形式で与えられます。
> $ Q $
その後、以下のやり取りを $ 2Q $ 回行ってください。 各回では、まずジャッジから push クエリまたは pop クエリが与えられます。
push クエリは以下の形式で与えられます。
> $ 1 $ $ X $
pop クエリは以下の形式で与えられます。
> $ 2 $
(なお、直前のクエリへの応答が不正であった場合、クエリの代わりに `-1` が標準入力から与えられます。この場合はただちにプログラムを正常終了してください。ただし、 $ 2Q $ 個目のクエリへの応答で初めて不正な出力を行った場合、その後の入力は何も与えられません。)
push クエリが与えられた場合、行う移動操作の回数を $ k $ とし、 $ r $ 回目の移動操作で選ぶキューの番号を $ i_r,j_r $ として、以下の形式で $ k+1 $ 行出力してください。出力後、必ず改行してください。
> $ k $ $ i_1 $ $ j_1 $ $ i_2 $ $ j_2 $ $ \vdots $ $ i_k $ $ j_k $
pop クエリが与えられた場合、先頭の値を取り除くキューの番号 $ i $ を以下の形式で出力してください。出力後、必ず改行してください。
> $ i $
Input Format
N/A
Output Format
N/A
Explanation/Hint
### 注意点
- **各クエリへの応答を出力するたびに、末尾に改行を入れて標準出力を flush してください。そうしなかった場合、ジャッジ結果が TLE となる可能性があります。**
- **ジャッジから `-1` という入力を受け取った場合は、ただちにプログラムを正常終了してください。終了した場合のジャッジ結果は WA となりますが、終了しなかった場合のジャッジ結果は不定です。**
- **余分な改行は不正な形式の出力とみなされるため、行わないでください。**
- $ 2Q $ 個のクエリへの応答を終えたら、ただちにプログラムを終了してください。そうしない場合、ジャッジ結果は不定です。
- この問題のジャッジは適応的(adaptive)ではありません。ジャッジは、対話前にクエリの種類と順序、および各 push クエリで与える整数 $ X $ を決定しています。
### 入出力例
以下は $ Q=2 $ で、ジャッジが $ 5,3 $ の順に値を追加するケースです。
入力出力説明```
2
```
$ Q $ が与えられます。```
1 5
```
push クエリです。 $ X=5 $ が与えられ、キュー $ 1 $ の末尾に追加されます。```
0
```
移動操作を行う回数は $ 0 $ 回です。```
1 3
```
push クエリです。 $ X=3 $ が与えられ、キュー $ 1 $ の末尾に追加されます。```
3
1 2
1 2
2 2
```
移動操作を $ 3 $ 回行います。 $ 5 $ をキュー $ 2 $ へ移動し、 $ 3 $ をキュー $ 2 $ へ移動し、キュー $ 2 $ の先頭の $ 5 $ を同じキューの末尾へ移動します。これにより、キュー $ 2 $ は先頭から $ 3,5 $ の順になります。```
2
```
pop クエリです。```
2
```
キュー $ 2 $ を選びます。その後、ジャッジがキュー $ 2 $ の先頭の $ 3 $ を取り除きます。```
2
```
pop クエリです。```
2
```
キュー $ 2 $ を選びます。その後、ジャッジがキュー $ 2 $ の先頭の $ 5 $ を取り除きます。
### Constraints
- $ 1 \le Q \le 5000 $
- $ 1 \le X \le 10^9 $
- 各 push クエリで追加される値 $ X $ は全て相異なる
- push クエリと pop クエリはそれぞれ $ Q $ 回ずつ与えられる
- 各 pop クエリが与えられる時点で、 $ 1 $ 本以上のキューが空でない
- 入力される値は全て整数