#include <stdio.h>
#include <string.h>
#define MAX 10000
#define BASE 1000000000
#define MAX_DIGIT 5010
#define BASE_DIGIT 9
char str1[MAX_DIGIT], str2[MAX_DIGIT];
unsigned long long num1[MAX], num2[MAX];
unsigned long long result[MAX];
int num1_dig, num2_dig, res_dig;
void convert(char *, unsigned long long *, int *);
void calculate();
void print_value(unsigned long long *, int);
void clear_result();
int main(void) {
while (scanf("%s %s", str1, str2) != EOF) {
clear_result();
convert(str1, num1, &num1_dig);
convert(str2, num2, &num2_dig);
calculate();
print_value(result, res_dig);
}
return 0;
}
void convert(char *str, unsigned long long *num, int *dig) {
int i, j, len;
unsigned long long val;
len = strlen(str);
*dig = 0;
for(i = len - 1; i >= 0; i -= BASE_DIGIT) {
j = i - BASE_DIGIT + 1;
if(j < 0) {
j = 0;
}
val = 0;
for(; j <= i; ++j) {
val *= 10;
val += str[j] - '0';
}
num[*dig] = val;
(*dig)++;
}
}
void print_value(unsigned long long *num, int dig) {
int i = dig - 1;
printf("%d", num[i]);
for (--i; i >= 0; --i) {
printf("%09d", num[i]);
}
printf("\n");
}
void calculate() {
int i, j, k, l;
unsigned long long val, tmp;
if((num1_dig == 1 && num1[0] == 0)
|| (num2_dig == 1 && num2[0] == 0))
{
res_dig = 0;
result[0] = 0;
goto end;
}
for(i = 0; i < num2_dig; ++i) {
val = 0;
k = i;
for(j = 0; j < num1_dig; ++j, ++k) {
val += num2[i] * num1[j];
result[k] += val % BASE;
val /= BASE;
l = k;
while(result[l] >= BASE) {
tmp = result[l];
result[l] = tmp % BASE;
result[l + 1] += tmp / BASE;
++l;
}
if(l > res_dig) {
res_dig = l;
}
}
if(val > 0) {
result[k] += val;
l = k;
while(result[l] >= BASE) {
tmp = result[l];
result[l] = tmp % BASE;
result[l + 1] += tmp / BASE;
++l;
}
}
if(l > res_dig) {
res_dig = l;
}
}
end:
res_dig++;
}
void clear_result() {
memset(result, 0, sizeof(result));
res_dig = 0;
}