#include <stdio.h>
#include <stdlib.h>
//手撕链表
typedef int DateType;
typedef struct List
{
    DateType val;
    struct List* next;
}LT;

//返回新节点
LT* CreateBayNode(DateType x)
{
    LT* newnode=(LT*)malloc(sizeof(LT));
    if(newnode==NULL)
    {
        perror("newnode malloc fail");
        return NULL;
    }
    newnode->next=NULL;
    newnode->val=x;
    return newnode;
}

//尾插
void PushBank(LT** head,DateType x)
{
    //创建要插入的节点
    LT* newnode = CreateBayNode(x);
    //判断头节点是否为NULL
    if(*head==NULL)
    {
        *head=newnode;
    }
    else
    {
        //进行找尾
        LT* cur=*head;
        LT* tail=*head;
        while(cur)
        {
            tail=cur;
            cur=cur->next;
        }
        //进行连接
        tail->next=newnode;
    }
}

//打印
void ListPrint(LT* head)
{
    LT* cur=head;
    while(cur)
    {
        printf("%d ",cur->val);
        cur=cur->next;
    }
}

LT* SUM=NULL;

void SumList(LT* A,LT* B)
{
    LT* curA=A;
    LT* curB=B;

    while(curA && curB)
    {
        PushBank(&SUM, curA->val+curB->val);
        curA=curA->next;
        curB=curB->next;
    }
}

int main()
{
    int n=0;
    scanf("%d",&n);
    int a[n];
    int b[n];
    LT* A=NULL;
    for(int i=0;i<n;i++)
    {
        scanf("%d",&a[i]);
    }
    for(int i=0;i<n;i++)
    {
        PushBank(&A, a[i]);
    }

    LT* B=NULL;
    for(int i=0;i<n;i++)
    {
        scanf("%d",&b[i]);
    }
    for(int i=0;i<n;i++)
    {
        PushBank(&B, b[i]);
    }

    //将两个链表求和并链接到另一个链表中
    SumList(A,B);

    //打印
    ListPrint(SUM);
    return 0;
}
//写出单链表结构,先将两个数组分别链接到两个链表中
//随后将两个链表值的和链接到一个新链表中
//最后将新链表打印出来