#include <iostream>
#include <cstring>
#include <string>
#define maxn 4005
#define mod 10000
struct BigInterger{
int a[maxn],len;
int &operator[](int i){return a[i];}
BigInterger(std::string s = "0"){
int k = 1,j = 1;
memset(a,0,sizeof(a));
for (int i = s.length() - 1;i >= 0;i--){
if (k == mod) j++,k = 1;
a[j] += k * (s[i] - '0');
k *= 10;
}
len = j;
}
BigInterger &operator=(std::string s){return *this = BigInterger(s);}
void flatten(int l){
len = l;
for (int i = 1;i <= len;i++)
a[i + 1] += a[i] / mod,a[i] %= mod;
while (len > 1 && !a[len]) len--;
}
BigInterger operator*(BigInterger x){
BigInterger ans;
for (int i = 1;i <= len;i++)
for (int j = 1;j <= x.len;j++)
ans[i + j - 1] += a[i] * x[j];
ans.flatten(len + x.len);
return ans;
}
};
std::istream &operator>>(std::istream &is,BigInterger &x){
std::string s;
is >> s;
x = s;
return is;
}
std::ostream &operator<<(std::ostream &os,BigInterger x){
os << x[x.len];
if (x.len == 1) return os;
for (int i = x.len - 1;i;i--) os.width(4),os.fill('0'),os << x[i];
}
int main(){
std::ios::sync_with_stdio(0);
std::cin.tie(0),std::cout.tie(0);
BigInterger a,b;
std::cin >> a >> b;
std::cout << a * b << '\n';
return 0;
}