虎龙斗
题号:NC222783
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

阿龙与小虎正在玩一款叫 《虎龙斗》的游戏。双方各自为营。

“龙虎相争,必有一伤”

在与小虎混战中,阿龙的部队被包围了,为了保全有生力量,阿龙决定从部队中挑选出  名士兵,杀出重围,而其他人留守阵地,持续抵抗。

阿龙目前有两列士兵分布在战壕中,人数分别为  和  ,每名士兵有一个冲锋属性  ,而所有士兵组成的队伍会形成一个冲锋序列,如果该序列的前面的项越大,那么突围的几率越大。(如:3 3 2 3 的 突围几率大于 3 2 3 3)

但是时间紧迫,每个战壕中选出的士兵必须按照原来的顺序冲出(只能按照给定的顺序,不可颠倒,但是不同战壕的士兵可以交替冲出)。

阿龙希望选出突围几率最大的冲锋序列,这个问题就交给你了。

形式化题意:有两个冲锋数组  (长度分别为 ) 你需要从中分别选出两个子序列,使其长度和为  ,并将两个子序列交错排布(但不可打乱每个子序列原来顺序),使选出的冲锋数组最大。

冲锋数组  >  当且仅当 存在  满足 并且  (数组下标从  开始)。


输入描述:

输入文件共三行。
第一行三个数,分别为  ,  , 
第二行  个数,即冲锋数组 
第三行  个数,即冲锋数组  

输出描述:

共一行。即你的答案。
示例1

输入

复制
3 2 4
1 1 2		
2 3

输出

复制
3 1 1 2
示例2

输入

复制
10 10 7
7 3 8 2 8 1 3 4 6 5
8 3 4 5 3 8 3 5 10 3

输出

复制
10 8 8 4 6 5 3

备注:

对于  的数据,满足  。

对于  的数据,满足  。

对于  的数据,满足  。

对于  的数据,满足  。

对于  的数据,满足  。