2420 - 迎面增长的栈

通过次数

50

提交次数

204

时间限制 : 1 秒
内存限制 : 128 MB

设有两个栈s1,s2都采用顺序结构存储,并共享一个存储区[0,…,maxsize-1],为了尽量利用空间,减少溢出的可能,可采用栈顶相向、迎面增长的存储方式。试设计一个程序,让两个栈s1和s2共享一个存储空间,现需要分别向两个栈中存储元素请你编程实现。

注意:增长指的是栈中元素数量增长,不需要对元素大小进行排序。

输入

第一行包含三个正整数maxsize、n和m,第一个正整数maxsize,表示共享栈存储区域的大小,要求输入的共享栈的空间足够大,即maxsize≥n+m;第二个正整数n表示栈s1中需要进栈元素的数量;第三个正整数m表示栈s2中需要进栈元素的数量。

第二行n个正整数,表示s1中需要入栈的元素;

第三行m个正整数,表示s2中需要入栈的元素。

第四行包含两个正整数a和b,a表示s1中需要出栈的元素个数,b表示s2中需要出栈的元素个数。

注意:两个正整数之间用正整数隔开。

输出

四行数据,第一行为栈s1中依次出栈的元素,第二行为栈s2中依次出栈的元素,第三行为出栈后栈s1中从栈顶到栈底所有元素,第二行为出栈后栈s2中从栈顶到栈底所有元素。

注意:元素之间用空格隔开。如果需要出栈或栈中的元素个数为0,则输出no。

样例

输入

10 5 5
0 1 1 2 1
1 8 4 3 7
1 2

输出

1
7 3
2 1 1 0
4 8 1

提示

【数据范围】

对于所有的maxsize,a,b,满足10≤maxsize≤100000,0≤a≤n,0≤a≤m。