FFT
#include<bits/stdc++.h>
using namespace std;
const int MAXN=1<<18;
const long long mod=998244353;
const int G=3;
long long rev[MAXN],w[2][MAXN];
long long fac[MAXN],inv[MAXN];
long long A[MAXN],B[MAXN];
long long powmod(long long x,long long p)
{
long long ret=1;
while(p)
{
if(p&1)
ret=ret*x%mod;
x=x*x%mod;
p>>=1;
}
return ret;
}
void init()
{
fac[0]=1;
for(int i=1;i<MAXN;i++)
fac[i]=fac[i-1]*i%mod;
inv[MAXN-1]=powmod(fac[MAXN-1],mod-2);
for(int i=MAXN-2;i>=0;i--)
inv[i]=inv[i+1]*(i+1)%mod;
}
void initfft(int n)
{
int i,k,x,y,v,dv;
for(i=0;i<=n-1;i++)
{
x=i;
y=0;
for(k=1;k<n;k<<=1,x>>=1)
(y<<=1)|=(x&1);
rev[i]=y;
}
v=powmod(G,(mod-1)/n);
dv=powmod(v,mod-2);
w[0][0]=w[1][0]=1;
for(i=1;i<=n-1;i++)
{
w[0][i]=w[0][i-1]*v%mod;
w[1][i]=w[1][i-1]*dv%mod;
}
}
inline void fft(long long *A,int n,int ff)
{
int i,j,k,t,l,v,x,y;
for(i=0;i<=n-1;i++)
{
if(i<rev[i])
swap(A[i],A[rev[i]]);
}
for(i=1;i<n;i<<=1)
{
for(j=0,t=n/(i<<1);j<n;j+=(i<<1))
{
for(k=0,l=0;k<i;k++,l+=t)
{
x=A[i+j+k]*w[ff][l]%mod;
y=A[j+k];
A[j+k]=(x+y)%mod;
A[i+j+k]=(y+mod-x)%mod;
}
}
}
if(ff)
{
v=powmod(n,mod-2);
for(i=0;i<=n-1;i++)
A[i]=A[i]*v%mod;
}
}
char s1[50050],s2[50050];
int main()
{
int len1,len2,m,ed,i;
while(~scanf(" %s",&s1))
{
scanf(" %s",&s2);
len1=strlen(s1);
len2=strlen(s2);
m=1;
while(m<=2*len1+2||m<=2*len2+2)
m<<=1;
initfft(m);
memset(A,0,sizeof(A));
memset(B,0,sizeof(B));
for(i=0;i<len1;i++)
A[i]=s1[len1-i-1]-'0';
for(i=0;i<len2;i++)
B[i]=s2[len2-i-1]-'0';
fft(A,m,0);
fft(B,m,0);
for(i=0;i<m;i++)
A[i]=A[i]*B[i]%mod;
fft(A,m,1);
ed=-1;
for(i=0;i<m-1;i++)
{
A[i+1]+=A[i]/10;
A[i]%=10;
if(A[i]==0)
{
if(ed==-1)
ed=i;
}
else
ed=-1;
}
if(ed==0)
printf("0");
for(i=ed-1;i>=0;i--)
printf("%c",char(A[i]+'0'));
puts("");
}
}