#include<bits/stdc++.h>
using namespace std;
const int N=1005;
struct bigNumber{
int x[N];
int len;
bigNumber(){
memset(x,0,sizeof(x));
len=1;
}
void read(){
string s;
cin>>s;
for(int i=0;i<s.size();i++) x[s.size()-i]=s[i]-'0';
len=s.size();
}
friend bigNumber operator+(bigNumber a,int b){
a.x[1]+=b;
return fix(a);
}
friend bigNumber operator-(bigNumber a,int b){
a.x[1]-=b;
return fix(a);
}
friend bigNumber operator*(bigNumber a,int b){
for(int i=1;i<=a.len;i++) a.x[i]*=b;
return fix(a);
}
friend bigNumber operator/(bigNumber a,int b){
int x=0;
bigNumber c;
c.len=a.len;
for(int i=c.len;i>0;i--){
c.x[i]=(x*10+a.x[i])/b;
x=(x*10+a.x[i])%b;
}
return fix(c);
}
friend bigNumber operator+(bigNumber a,bigNumber b){
bigNumber c;
c.len=max(a.len,b.len);
for(int i=1;i<=c.len;i++) c.x[i]=a.x[i]+b.x[i];
return fix(c);
}
friend bigNumber operator-(bigNumber a,bigNumber b){
bigNumber c;
c.len=max(a.len,b.len);
for(int i=1;i<=c.len;i++) c.x[i]=a.x[i]-b.x[i];
return fix(c);
}
friend bigNumber operator*(bigNumber a,bigNumber b){
bigNumber c;
c.len=max(a.len,b.len);
for(int i=1;i<=a.len;i++)
for(int j=1;j<=b.len;j++)
c.x[i+j-1]+=a.x[i]*b.x[j];
return fix(c);
}
friend bigNumber fix(bigNumber a){
for(int i=1;i<a.len;i++){
if(a.x[i]<0) a.x[i]==10,--a.x[i+1];
a.x[i+1]+=a.x[i]/10;
a.x[i]%=10;
}
while(a.x[a.len]>9){
a.x[a.len+1]+=a.x[a.len]/10;
a.x[a.len]%=10;
++a.len;
}
while(a.len>1&&!a.x[a.len]) --a.len;
if(a.x[a.len]<0)
{
bigNumber c;
c.len=a.len;
c.x[c.len]=-a.x[a.len];
a.x[a.len--]=0;
a=c-a;
a.x[a.len]*=-1;
}
return a;
}
void print(){
for(int i=len;i>0;i--) printf("%d",x[i]);
printf("\n");
}
};
int main(){
bigNumber a,b;
int c,d;
a.read();
b.read();
(a*b).print();
return 0;
}