#include <stdlib.h>
#include <string.h>
int a[2005];
int b[2005];
int c[4005];
int jin(int a[]) {
for (int i = 0; a[i] != -1; i++) {
if (a[i] >= 10) {
if (a[i + 1] == -1) {
a[i + 1] = a[i] / 10;
a[i] = a[i] % 10;
} else {
a[i + 1] = a[i + 1] + a[i] / 10;
a[i] = a[i] % 10;
}
}
}
return *a;
}
int main(void) {
memset(a, -1, sizeof(a));
memset(b, -1, sizeof(b));
memset(c, -1, sizeof(c));
char a0[2005];
char b0[2005];
memset(a0, '\0', sizeof(a0));
memset(b0, '\0', sizeof(b0));
fgets(a0, 2000, stdin);
fgets(b0, 2000, stdin);
int len = strlen(a0);
int len1 = strlen(b0);
len = len - 1;
len1 = len1 - 1;
for (int i = 0; i <= len - 1; i++) {
a[i] = a0[len - i - 1] - 48;
}//数字倒过来,从个位到高位
for (int i = 0; i <= len1 - 1; i++) {
b[i] = b0[len1 - i - 1] - 48;
}//同上
for (int i = 0; i <= len1 - 1; i++) {
for (int j = 0; j <= len - 1; j++) {
if (c[j + i] == -1) {
c[j + i] = a[j] * b[i];
} else {
c[j + i] = c[j + i] + a[j] * b[i];
}//因为初始化的是-1,如果是-1说明这个位置还没有数,直接赋值,如果不是-1就加到原来的数上
}
}
jin(c);//把各个位置上的数进位
int flag=0;
int num=0;
for(int i=1;i<=4005;i++){
if(c[4005-i]!=-1&&c[4005-i]!=0){
flag=1;
num=i;
break;
}
}//找到c数组的最高位
if((len==1&&a[0]==0)||(len1==1&&b[0]==0)){
printf("0");
}
else{
for(int i=num;i<=4005;i++){
printf("%d",c[4005-i]);
}
}//特判0和输出
return 0;
}