#include <stdio.h>
#include <string.h>

#define MAX_LEN (10002)
#define ADDITIONAL_LEN (4)
#define LEFT_OFFSET (1)

static void add(const char* s1, int len1, const char* s2, int len2, char* ans, int len);

static void sub(const char* s1, int len1, const char* s2, int len2, char* ans, int len);

char * long_integer_add(char * s1,int len1, char * s2,int len2)
{
    char* ans; int real_len;
    int len = len1 > len2 ? len1 : len2;
    int max_len = len + ADDITIONAL_LEN;
    ans = (char*)malloc(max_len * sizeof(char));
    memset(ans, 0, max_len * sizeof(char));

    char s1_ch = *(s1); char s2_ch = *(s2);
    // decide to use add or use sub 
    if (s1_ch == '-' && s2_ch == '-')
    {
        // two negative numbers
        s1 = s1 + 1; len1 = len1 - 1;
        s2 = s2 + 1; len2 = len2 - 1;
        add(s1, len1, s2, len2, ans, max_len);
        int i = 0;
        for (; i < max_len; i++) {
            if (*(ans + i) != '\0') {
                *(ans + i - 1) = '-';
                break;
            }
        }
    }
    else if(s1_ch == '-' && s2_ch != '-')
    {
        // negative number(s1) + positive number(s2)
        s1 = s1 + 1; len1 = len1 - 1;
        sub(s2, len2, s1, len1, ans, max_len);
    }
    else if(s1_ch != '-' && s2_ch == '-')
    {
        // positive number(s1) + negative number(s2)
        s2 = s2 + 1; len2 = len2 - 1;
        sub(s1, len1, s2, len2, ans, max_len);
    }
    else
    {
        // positive number(s1) + positive number(s2)
        add(s1, len1, s2, len2, ans, max_len);
    }
    
    return ans;
}



int main(){
    char s1[MAX_LEN] = {0};
    char s2[MAX_LEN] = {0};
    fgets(s1,MAX_LEN,stdin);
    fgets(s2,MAX_LEN,stdin);
    int len1 = strlen(s1) - 1;
    int len2 = strlen(s2) - 1;
    char* ans =long_integer_add(s1, len1, s2, len2);
    int i = 0;
    while(*(ans+i) == '\0'){
        i++;
    }
    printf("%s\n",ans+i);
    return 0;
}

void add(const char * s1, int len1, const char * s2, int len2, char * ans, int len)
{
    // 1.compare two numbers to find the longer
    int short_len, long_len;
    char* short_s; char* long_s;
    if (len1 >= len2) {
        long_len = len1; long_s = s1;
        short_len = len2; short_s = s2;
    }
    else
    {
        long_len = len2; long_s = s2;
        short_len = len1; short_s = s1;
    }

    // 2.use the longer add the shorter
    char sch, lch;
    int flag = 0; int sum = 0;
    for (int i = 0; i < long_len; i++) {
        lch = *(long_s + long_len - 1 - i);
        if (i < short_len) { 
            sch = *(short_s + short_len - 1 - i);
        }
        else
        {
            sch = '0';
        }
        sum = lch - '0' + sch - '0' + flag;
        flag = 0; //reserve 0 after adding flag

        if (sum / 10 > 0) {
            flag = 1;
        }
        *(ans + len - 1 - LEFT_OFFSET - i) = sum % 10 + '0';
    }

    if (flag == 1) {
        *(ans + len - 1 - LEFT_OFFSET - long_len) = '1';
    }
}

void sub(const char * s1, int len1, const char * s2, int len2, char * ans, int len)
{
    // 1.compare two numbers to find the bigger
    int flag = 0;
    int short_len, long_len;
    char* short_s; char* long_s;

    long_len = len1; long_s = s1;
    short_len = len2; short_s = s2;
    if (len1 < len2) {
        long_len = len2; long_s = s2;
        short_len = len1; short_s = s1;
        flag = 1;
    }
    else if (len1 == len2) {
        for (int i = 0; i < len1; i++) {
            if(*(s1 + i) < *(s2 + i))
            {
                long_len = len2; long_s = s2;
                short_len = len1; short_s = s1;
                flag = 1;
                break;
            }
            else if (*(s1 + i) > *(s2 + i)) {
                break;
            }
        }
    }

    // 2.use the bigger minus the smaller 
    char subch, minch, ch;
    int minuend, subtrahend;
    int flag2 = 0;
    for (int i = 0; i < long_len; i++) {
        minch = *(long_s + long_len - 1 - i);
        if (i < short_len) {
            subch = *(short_s + short_len - 1 - i);
        }
        else
        {
            subch = '0';
        }

        minuend = minch - '0' - flag2;
        flag2 = 0; //reserve 0 after minusing flag
        subtrahend = subch - '0';

        if (minuend >= subtrahend) {
            ch = minuend - subtrahend + '0';
            *(ans + len - 1 - LEFT_OFFSET - i) = ch;
        }
        else {
            flag2 = 1;
            ch = 10 - subtrahend + minuend + '0';
            *(ans + len - 1 - LEFT_OFFSET - i) = ch;
        }

    }
    if (flag) {
        for (int i = 0; i < long_len; i++) {
            if (*(ans + i) != '\0') {
                *(ans + i - 1) = '-';
                break;
            }
        }
    }
}