#include<iostream>
#include<array>
#include<string>
#include<sstream>
#include<algorithm>
#include<vector>
#include<cstdlib>
#include<cmath>
#include<cstdio>
#include<cstdlib>
using namespace std;
class UBigNum{
public:
friend istream&operator>>(istream&in,UBigNum&x){
char c;
x.data.clear();
while(isdigit(c=in.get()))
x.data.push_back(c-'0');
return in;
}
friend ostream&operator<<(ostream&out,UBigNum x){
for(int i:x.data)
out<<i;
return out;
}
UBigNum(){
data.clear();
data.push_back(0);
}
UBigNum(string s){
stringstream ss;
ss.clear();
ss<<s;
ss>>*this;
}
UBigNum(unsigned int x){
*this=UBigNum(to_string(x));
}
UBigNum& div10(int t=1){
while(t){
if(this->data.size()==1)
this->data.front()=0;
else
this->data.pop_back();
t--;
}
return *this;
}
UBigNum& mul10(int t=1){
while(t){
if(!(this->data.size()==1&&this->data.back()==0))
this->data.push_back(0);
t--;
}
return *this;
}
friend UBigNum operator+=(UBigNum&a,UBigNum b){
return a=a+b;
}
friend UBigNum operator*=(UBigNum&a,UBigNum b){
return a=a*b;
}
friend UBigNum operator+(UBigNum a,UBigNum b){
UBigNum r;
bool bb=false;
r.data.clear();
for(int i=0;i<max(a.data.size(),b.data.size());i++){
if(bb)
bb=false;
else
r.data.push_back(0);
if(i<a.data.size())
r.data.back()+=a.data[a.data.size()-i-1];
if(i<b.data.size())
r.data.back()+=b.data[b.data.size()-i-1];
if(r.data.back()>=10){
r.data.back()%=10;
r.data.push_back(1);
bb=true;
}
}
reverse(r.data.begin(),r.data.end());
return r;
}
friend UBigNum operator*(UBigNum a,UBigNum b){
if(a.data.size()==1&&a.data.front()==0||b.data.size()==1&&b.data.front()==0)
return UBigNum(0);
UBigNum r;
r.data.clear();
if(b.data.size()==1){
bool bb=false;
int t=b.data.front();
for(int i=0;i<a.data.size();i++){
if(bb)
bb=false;
else
r.data.push_back(0);
r.data.back()+=a.data[a.data.size()-i-1]*t;
if(r.data.back()>=10){
int tt=r.data.back()/10;
r.data.back()%=10;
r.data.push_back(tt);
bb=true;
}
}
reverse(r.data.begin(),r.data.end());
return r;
}
if(a.data.size()==1){
return b*a;
}
for(int i=b.data.size()-1;i>=0;i--){
r+=a*UBigNum(b.data[i]);
a.mul10();
}
return r;
}
private:
vector<unsigned int>data;
};
UBigNum a,b;
int main(){
cin>>a>>b;
cout<<a*b<<"\n";
return 0;
}
12345*65432=807758040 why?