#!/usr/bin/python3
# Aritmetické algoritmy pracující po číslicích
# Číslo je reprezentované seznamem číslic počínaje _nejnižším_ řádem

def nacti():
    return [ int(x) for x in reversed(input()) ]

def na_retezec(a):
    return "".join([ str(x) for x in reversed(a) ])

def secti(a, b):
    if len(a) < len(b):
        a, b = b, a

    c = []
    prenos = 0

    for i in range(len(a)):
        if i < len(b):
            bi = b[i]
        else:
            bi = 0
        s = a[i] + bi + prenos
        c.append(s % 10)
        prenos = s // 10

    if prenos > 0:
        c.append(prenos)

    return c

def vynasob_cislici(a, cislice):
    c = []
    prenos = 0

    for i in range(len(a)):
        s = a[i]*cislice + prenos
        c.append(s % 10)
        prenos = s // 10

    if prenos > 0:
        c.append(prenos)

    return c

def vynasob(a, b):
    c = []

    for i in range(len(b)):
        mezivysl = [0]*i + vynasob_cislici(a, b[i])
        c = secti(c, mezivysl)

    return c

# Příklad použití:
a = nacti()
b = nacti()
print("Součet:", na_retezec(secti(a, b)))
print("Součin:", na_retezec(vynasob(a, b)))