#include <bits/stdc++.h>
using namespace std;
void AddTwoStr(string &s1,string &s2,string &sum){
int carry = 0;
int sz = s1.size();
sum = "";
for(auto i =sz - 1;i >= 0;--i){
char cur = ((s1[i] - '0') +(s2[i] - '0') + carry) % 10 + '0';
carry = ((s1[i] - '0') +(s2[i] - '0') + carry) / 10;
sum += cur;
}
if(carry)
sum += carry + '0';
reverse(sum.begin(),sum.end());
}
string func(string s1,string s2){
int sz1 = s1.size();
int sz2 = s2.size();
if(sz1 < sz2){
string tmp = s1;
s1 = s2;
s2 = tmp;
sz1 = s1.size();
sz2 = s2.size();
}
vector<string> strs(sz2);
string cur;
int carry = 0,k = 0;
for(auto i = sz2 - 1;i >= 0;--i){
cur = "";
carry = 0;
for(auto j = sz1 - 1;j>=0;--j){
cur += ((s2[i] - '0')*(s1[j] - '0') + carry) % 10 + '0';
carry = ((s2[i] - '0')*(s1[j] - '0') + carry) / 10;
}
if(carry)
cur += carry + '0';
reverse(cur.begin(),cur.end());
strs[k++] = cur;
}
for(auto i = 0;i < sz2;++i)
strs[i] += string(i,'0');
for(auto i = 0;i < sz2;++i)
strs[i] = string(strs[sz2 - 1].size() - strs[i].size(),'0') + strs[i];
if(sz2 == 1)
return strs[0];
cur = "";
AddTwoStr(strs[0],strs[1],cur);
for(auto i = 2;i<sz2;++i){
string tmp(cur);
AddTwoStr(strs[i],tmp,cur);
}
return cur;
}
int main(){
string s1,s2;
while(cin >> s1 >> s2){
cout<<func(s1,s2)<<endl;
}
return 0;
}