#include <stdio.h>   // 引入标准输入输出库,用于输入输出函数
#include <stdlib.h>  // 引入标准库,用于动态内存分配函数malloc和free

// 定义一个函数hanshu,功能是返回两个整数的差的绝对值
int hanshu(int sum1, int sum2)
{
    // 如果sum1大于等于sum2,返回sum1减去sum2的结果
    if (sum1 >= sum2) return(sum1 - sum2);
    // 否则返回sum2减去sum1的结果
    else return(sum2 - sum1);
}

// 主函数,程序入口
int main()
{
    int n, m;  // 定义两个整数变量n和m,分别表示两个数组的元素个数
    // 从标准输入读取两个整数,分别赋值给n和m
    scanf("%d %d", &n, &m);
    
    // 动态分配(n+1)个int类型大小的内存空间,将地址赋值给指针a
    int* a = (int*)malloc((n + 1) * sizeof(int));
    // 动态分配(m+1)个int类型大小的内存空间,将地址赋值给指针b
    int* b = (int*)malloc((m + 1) * sizeof(int));
    
    int x = n, y = m;  // 定义变量x和y,分别赋值为n和m(后续代码未使用这两个变量)
    int sum1 = 0;     // 定义变量sum1,用于存储数组a所有元素的和,初始化为0
    
    // 循环读取n个整数,存储到数组a中
    for (int i = 0; i < n; i++) 
    {
        scanf("%d", &a[i]);
    } 
    
    // 循环读取m个整数,存储到数组b中
    for (int i = 0; i < m; i++) 
    {
        scanf("%d", &b[i]);
    }
    
    // 计算数组a所有元素的和,存储到sum1中
    for (int i = 0; i < n; i++)
    {
        sum1 += a[i];
    }
    
    int min = sum1;  // 定义变量min,用于存储最小差值,初始化为sum1
    int sum2 = 0, l, k;  // 定义变量sum2(用于存储数组b子数组的和)、l和k(用于记录子数组的起始和结束索引)
    
    // 外层循环:遍历数组b,确定子数组的起始索引i
    for (int i = 0; i < m; i++)
    {
        sum2 = b[i];  // 初始化sum2为b[i],即子数组的第一个元素
        
        // 内层循环:遍历数组b,确定子数组的结束索引j
        for (int j = i + 1; j <= m; j++)  // 注意:这里j的上限是m,可能导致数组b越界访问(b[m]未初始化)
        {
            sum2 += b[j];  // 将b[j]累加到sum2中,扩展子数组范围
            
            // 如果当前子数组和sum2与sum1的差值绝对值小于当前最小值min
            if (hanshu(sum1, sum2) < min)
            {
                min = hanshu(sum1, sum2);  // 更新最小值min
                l = i;  // 记录当前子数组的起始索引i
                k = j;  // 记录当前子数组的结束索引j
            }
        }
    }
    
    // 循环打印数组b中从索引l到k的所有元素
    for (int x = l; x <= k; x++)
    {
        printf("%d ", b[x]);
    }
    
    // 释放动态分配的内存空间
    free(a);
    free(b);
    
    return 0;  // 程序正常结束,返回0
}