長さ N の正整数列 A=(A 1 , A 2 , ..., A N ) と,長さ M の正整数列 B=(B 1 , B 2 , ..., B M ) が与えられる.
これらの数列は,共に広義単調増加数列である.つまり, A 1 ≦ A 2 ≦ ... ≦ A N , B 1 ≦ B 2 ≦ ... ≦ B M を満たす.
以下のアルゴリズムを用いて,これらの数列から,長さ N+M の正整数列 C=(C 1 , C 2 , ..., C N+M ) を生成する.
はじめ C は空とする.
A と B がどちらも空の場合,終了する.
A と B のどちらかが空の場合,そうでない数列を t とおく.どちらも空でない場合,先頭の要素が小さい数列を t とおく.ただし, A と B の先頭の要素が同じ値のときは A を t とおく.
t の先頭の要素を C の末尾に追加する.
t の先頭の要素を削除する.
- に戻る.
広義単調増加な正整数列 A , B が与えられたとき,このアルゴリズムにより生成される正整数列 C を出力するプログラムを作成せよ.
1 ≦ N ≦ 500 .
1 ≦ M ≦ 500 .
1 ≦ A 1 ≦ A 2 ≦ ... ≦ A N ≦ 2000 .
1 ≦ B 1 ≦ B 2 ≦ ... ≦ B M ≦ 2000 .
入力は以下の形式で標準入力から与えられる.
N M
A 1 A 2 ... A N
B 1 B 2 ... B M
標準出力に N + M 行出力せよ.
k 行目 ( 1 ≦ k ≦ N + M ) には, C k を出力せよ.
2 1
1 2
2
1
2
2
3 8
1 3 8
3 3 4 5 6 7 8 9
1
3
3
3
4
5
6
7
8
8
9