#include<bits/stdc++.h>
using namespace std;
#define ll long long
typedef vector<ll> bignum;
bignum add(bignum a, bignum b) {
bignum c;
c.resize(max(a.size(), b.size()));
//Resize để thêm 0 vào cuối cho những số có độ dài khác nhau
a.resize(c.size());
b.resize(c.size());
ll mem = 0;
for (int i = 0; i < c.size(); ++i){
ll sum = mem + a[i] + b[i];
c[i] = sum%10;
mem = sum/10;
}
if(mem > 0) c.push_back(mem);
return c;
}
bignum subtract(bignum a, bignum b) {
bignum c;
c.resize(max(a.size(), b.size()));
//Resize để thêm 0 vào cuối cho những số có độ dài khác nhau
a.resize(c.size());
b.resize(c.size());
ll mem = 0;
for (int i = 0; i < c.size(); ++i){
ll sub = a[i] - b[i] - mem;
if(sub < 0){
mem = 1;
sub += 10;
}else
mem = 0;
c[i] = sub;
}
//loại bỏ các số 0 ở đầu
while(c.size()>1 && c[c.size()-1] == 0) c.pop_back();
return c;
}
bignum multiple(bignum a, ll b) {
bignum c;
c.resize(a.size());
ll mem = 0;
for (int i = 0; i < c.size(); ++i){
ll mul = mem + a[i]*b;
c[i] = mul%10;
mem = mul/10;
}
while(mem>0){
c.push_back(mem%10);
mem/=10;
}
return c;
}
bignum multipleBig(bignum a, bignum b) {
bignum c,cnt;
c.clear();
c.push_back(0);
cnt.clear();
ll mem = 0;
for (int i = 0; i < b.size(); ++i){
//nhân từng chữ số của b với a
bignum tmp = multiple(a,b[i]);
//Thêm 0 vào đầu
tmp.insert(tmp.begin(),cnt.begin(), cnt.end());
//cộng dồn vào kết quả
c = add(c, tmp);
cnt.push_back(0);
}
return c;
}
// chia lấy phần nguyên
bignum division(bignum a, ll b) {
bignum c;
c.resize(a.size());
ll mem = 0;
for (int i = c.size()-1; i >=0; i--){
ll div = mem*10 + a[i];
c[i] = div/b;
mem = div%b;
}
//loại bỏ các số 0 ở đầu
while(c.size()>1 && c[c.size()-1] == 0) c.pop_back();
return c;
}
//chia lấy phần dư
ll mod(bignum a, ll b) {
ll mem = 0;
for (int i = a.size()-1; i >=0; i--){
ll div = mem*10 + a[i];
mem = div%b;
}
return mem;
}
bignum toBignum(string a){
bignum c;
c.clear();
for(int i = a.size()-1; i >=0; i--)
c.push_back(a[i] - 48);
return c;
}
string toString(bignum a){
string s = "";
for(int i = a.size()-1; i >=0; i--)
s += char(a[i]+48);
return s;
}
int main() {
string a,b;
cin>>a>>b;
bignum A = toBignum(a);
bignum B = toBignum(b);
// bignum C = add(A,B);
// bignum C = subtract(A,B);
bignum C = multipleBig(A, B);
// bignum C = division(A, 19);
// ll c = mod(A,19);
// cout<<c;
cout<<toString(C);
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCiNkZWZpbmUgbGwgbG9uZyBsb25nCgp0eXBlZGVmIHZlY3RvcjxsbD4gYmlnbnVtOwoKYmlnbnVtIGFkZChiaWdudW0gYSwgYmlnbnVtIGIpIHsKCWJpZ251bSBjOwoJYy5yZXNpemUobWF4KGEuc2l6ZSgpLCBiLnNpemUoKSkpOwoJLy9SZXNpemUgxJHhu4MgdGjDqm0gMCB2w6BvIGN14buRaSBjaG8gbmjhu69uZyBz4buRIGPDsyDEkeG7mSBkw6BpIGtow6FjIG5oYXUKCWEucmVzaXplKGMuc2l6ZSgpKTsKCWIucmVzaXplKGMuc2l6ZSgpKTsKCWxsIG1lbSA9IDA7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IGMuc2l6ZSgpOyArK2kpewogICAgICAgIGxsIHN1bSA9IG1lbSArIGFbaV0gKyBiW2ldOwogICAgCWNbaV0gPSBzdW0lMTA7CiAgICAJbWVtID0gc3VtLzEwOwogICAgfQogICAgaWYobWVtID4gMCkgYy5wdXNoX2JhY2sobWVtKTsKICAgIHJldHVybiBjOwp9CgpiaWdudW0gc3VidHJhY3QoYmlnbnVtIGEsIGJpZ251bSBiKSB7CgliaWdudW0gYzsKCWMucmVzaXplKG1heChhLnNpemUoKSwgYi5zaXplKCkpKTsKCS8vUmVzaXplIMSR4buDIHRow6ptIDAgdsOgbyBjdeG7kWkgY2hvIG5o4buvbmcgc+G7kSBjw7MgxJHhu5kgZMOgaSBraMOhYyBuaGF1CglhLnJlc2l6ZShjLnNpemUoKSk7CgliLnJlc2l6ZShjLnNpemUoKSk7CglsbCBtZW0gPSAwOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjLnNpemUoKTsgKytpKXsKICAgICAgICBsbCBzdWIgPSBhW2ldIC0gYltpXSAtIG1lbTsKICAgICAgICBpZihzdWIgPCAwKXsKICAgICAgICAJbWVtID0gMTsKICAgICAgICAJc3ViICs9IDEwOwogICAgICAgIH1lbHNlCiAgICAgICAgCW1lbSA9IDA7CiAgICAJY1tpXSA9IHN1YjsKICAgIH0KICAgIC8vbG/huqFpIGLhu48gY8OhYyBz4buRIDAg4bufIMSR4bqndQogICAgd2hpbGUoYy5zaXplKCk+MSAmJiBjW2Muc2l6ZSgpLTFdID09IDApIGMucG9wX2JhY2soKTsKICAgIHJldHVybiBjOwp9CgpiaWdudW0gbXVsdGlwbGUoYmlnbnVtIGEsIGxsIGIpIHsKCWJpZ251bSBjOwoJYy5yZXNpemUoYS5zaXplKCkpOwoJbGwgbWVtID0gMDsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYy5zaXplKCk7ICsraSl7CiAgICAgICAgbGwgbXVsID0gbWVtICsgYVtpXSpiOwogICAgCWNbaV0gPSBtdWwlMTA7CiAgICAJbWVtID0gbXVsLzEwOwogICAgfQogICAgd2hpbGUobWVtPjApewogICAgCWMucHVzaF9iYWNrKG1lbSUxMCk7CiAgICAJbWVtLz0xMDsKICAgIH0KICAgIHJldHVybiBjOwp9CgpiaWdudW0gbXVsdGlwbGVCaWcoYmlnbnVtIGEsIGJpZ251bSBiKSB7CgliaWdudW0gYyxjbnQ7CgljLmNsZWFyKCk7CgljLnB1c2hfYmFjaygwKTsKCWNudC5jbGVhcigpOwoJbGwgbWVtID0gMDsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYi5zaXplKCk7ICsraSl7CiAgICAgICAgLy9uaMOibiB04burbmcgY2jhu68gc+G7kSBj4bunYSBiIHbhu5tpIGEKICAgICAgICBiaWdudW0gdG1wID0gbXVsdGlwbGUoYSxiW2ldKTsKICAgICAgICAvL1Row6ptIDAgdsOgbyDEkeG6p3UKICAgICAgICB0bXAuaW5zZXJ0KHRtcC5iZWdpbigpLGNudC5iZWdpbigpLCBjbnQuZW5kKCkpOwogICAgICAgIC8vY+G7mW5nIGThu5NuIHbDoG8ga+G6v3QgcXXhuqMKICAgICAgICBjID0gYWRkKGMsIHRtcCk7CiAgICAgICAgY250LnB1c2hfYmFjaygwKTsKICAgIH0KICAgIHJldHVybiBjOwp9CgovLyBjaGlhIGzhuqV5IHBo4bqnbiBuZ3V5w6puCmJpZ251bSBkaXZpc2lvbihiaWdudW0gYSwgbGwgYikgewoJYmlnbnVtIGM7CgljLnJlc2l6ZShhLnNpemUoKSk7CglsbCBtZW0gPSAwOwogICAgZm9yIChpbnQgaSA9IGMuc2l6ZSgpLTE7IGkgPj0wOyBpLS0pewogICAgICAgIGxsIGRpdiA9IG1lbSoxMCArIGFbaV07CiAgICAJY1tpXSA9IGRpdi9iOwogICAgCW1lbSA9IGRpdiViOwogICAgfQogICAgLy9sb+G6oWkgYuG7jyBjw6FjIHPhu5EgMCDhu58gxJHhuqd1CiAgICB3aGlsZShjLnNpemUoKT4xICYmIGNbYy5zaXplKCktMV0gPT0gMCkgYy5wb3BfYmFjaygpOwogICAgcmV0dXJuIGM7Cn0KLy9jaGlhIGzhuqV5IHBo4bqnbiBkxrAKbGwgbW9kKGJpZ251bSBhLCBsbCBiKSB7CglsbCBtZW0gPSAwOwogICAgZm9yIChpbnQgaSA9IGEuc2l6ZSgpLTE7IGkgPj0wOyBpLS0pewogICAgICAgIGxsIGRpdiA9IG1lbSoxMCArIGFbaV07CiAgICAJbWVtID0gZGl2JWI7CiAgICB9CiAgICByZXR1cm4gbWVtOwp9CmJpZ251bSB0b0JpZ251bShzdHJpbmcgYSl7CgliaWdudW0gYzsKCWMuY2xlYXIoKTsKCWZvcihpbnQgaSA9IGEuc2l6ZSgpLTE7IGkgPj0wOyBpLS0pCgkJYy5wdXNoX2JhY2soYVtpXSAtIDQ4KTsKCXJldHVybiBjOwp9CgpzdHJpbmcgdG9TdHJpbmcoYmlnbnVtIGEpewoJc3RyaW5nIHMgPSAiIjsKCWZvcihpbnQgaSA9IGEuc2l6ZSgpLTE7IGkgPj0wOyBpLS0pCgkJcyArPSBjaGFyKGFbaV0rNDgpOwoJcmV0dXJuIHM7Cn0KCmludCBtYWluKCkgewoJc3RyaW5nIGEsYjsKCWNpbj4+YT4+YjsKCWJpZ251bSBBID0gdG9CaWdudW0oYSk7CgliaWdudW0gQiA9IHRvQmlnbnVtKGIpOwoJLy8gYmlnbnVtIEMgPSBhZGQoQSxCKTsKCS8vIGJpZ251bSBDID0gc3VidHJhY3QoQSxCKTsKCWJpZ251bSBDID0gbXVsdGlwbGVCaWcoQSwgQik7CgoJLy8gYmlnbnVtIEMgPSBkaXZpc2lvbihBLCAxOSk7CgkvLyBsbCBjID0gbW9kKEEsMTkpOwoJLy8gY291dDw8YzsKCWNvdXQ8PHRvU3RyaW5nKEMpOwp9