#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>

#define rs 1211

typedef struct tlong{
  char* num;
  int l;
} tlong;

void flip(char* s, int l)
{
  char c;
  int i,m=(l+1)/2;
  for(i=0;i<m;i++)
  {
    c=s[i];
    s[i]=s[l-1-i];
    s[l-1-i]=c;
  }
  return;
}

/*void smlp(tlong* s, char k)
{
  int i,p=0;
  for(i=0;i<(*s).l || p!=0;i++)
  {
    (*s).num[i]=(*s).num[i]*k+p;
    if((*s).num[i]>10)
    {
      p=(*s).num[i]/10;
      (*s).num[i]=(*s).num[i]%10;
    }
    else
      p=0;
  }
  (*s).l=i;
}

void add(tlong* s1,tlong* s2,int p)
{
  int i,flag=0;
  for(i=p;i<p+(*s2).l || flag!=0;i++)
  {
    if(i<p+(*s2).l)
      (*s1).num[i]+=(*s2).num[i-p]+flag;
    else
      (*s1).num[i]+=flag;
    if((*s1).num[i]>=10)
    {
      flag=1;
      (*s1).num[i]-=10;
    }
    else
      flag=0;
  }
}*/

void mlp(tlong *s1, tlong *s2)
{
  tlong *r;
  int i,j,k;
  r=(tlong*)malloc(sizeof(tlong));
  (*r).num=(char*)malloc((*s1).l+(*s2).l+1);
  (*r).l=0;
  for(i=0;i<(*s1).l+(*s2).l+1;i++)
    (*r).num[i]=0;

  for(i=0;i<(*s1).l;i++)
    for(j=0;j<(*s2).l;j++)
    {
      k=i+j;
      (*r).num[k]+=(*s1).num[i]*(*s2).num[j];
      while((*r).num[k]>=10)
      {
        (*r).num[k+1]+=(*r).num[k]/10;
        (*r).num[k]=(*r).num[k]%10;
        k++;
      }
    }
  
/*  for(i=0;i<(*s1).l;i++)
  {
    for(j=0;j<(*s2).l;j++)
      (*h).num[j]=(*s2).num[j];
    (*h).num[(*s2).l]=0;
    (*h).l=(*s2).l;
    smlp(h,(*s1).num[i]);
    add(r,h,i);
  }*/
  *s1=*r;
  return;
}


int main(void)
{
  char (*s1)=(char*)malloc(rs),(*s2)=(char*)malloc(rs);
  tlong n1,n2;
  int i,l,r,maxl;
  char c;
  
  l=0;r=0;maxl=rs;
  for(i=0;;i++)
  {
    if(scanf("%c",&c)==0 || (r==1 && isspace(c)))
      break;
    if(!isspace(c))
    {
      r=1;
      s1[l]=c;
      l++;
      if(l>=maxl)
      {
        maxl*=2;
        s1=(char*)realloc(s1,maxl);
      }
    }
  }
  s1[l]=0;
  
  l=0;r=0;maxl=rs;
  for(i=0;;i++)
  {
    if(scanf("%c",&c)==0 || r==1 && isspace(c))
      break;
    if(!isspace(c))
    {
      r=1;
      s2[l]=c;
      l++;
      if(l>=maxl)
      {
        maxl*=2;
        s2=(char*)realloc(s2,maxl);
      }
    }
  }
  s2[l]=0;
  //scanf("%s%s",s1,s2);
  
  l=strlen(s1);
  for(i=0;i<l;i++)
    s1[i]=s1[i]-'0';
  flip(s1,l);
  n1.l=l;
  n1.num=s1;
  
  l=strlen(s2);
  for(i=0;i<l;i++)
    s2[i]=s2[i]-'0';
  flip(s2,l);
  n2.l=l;
  n2.num=s2;
  
  l=n1.l+n2.l;
  
  mlp(&n1,&n2);
  
  int f=1;
  for(i=l;i>=0;i--)
  {
    if(n1.num[i]!=0)
      f=0;
    if(f==0)
      printf("%d",n1.num[i]);
  }
  if(f==1)
    printf("0");
  return 0;
}
