#include <stdio.h>
typedef struct BigNum_
{
int len;
int data[1005];
int sign;
} BigNum;
void Zero(BigNum* num)
{
int i = 0;
int* data = num->data;
for (i = 0; i < 1000; ++i) data[i] = 0;
num->sign = 1;
}
void Rev(char* a)
{
char t;
char* b = a;
while (*b++);
b-=2;
while (a<b) t = *a, *a=*b, *b = t, ++a, --b;
}
void ToBigNum(BigNum* num, char* str)
{
int len = 0;
int* data = num->data;
if (*str=='-') num->sign = -1, str++;
else num->sign = 1;
Rev(str);
for (;*str;data[len++]=*str++-'0');
if (len == 0) data[0]=0, num->len = 1;
else num->len=len;
}
void Mul(BigNum* result ,BigNum* l, BigNum* r)
{
int i, j;
int len = -1;
for (i = 0; i < r->len; ++i)
{
int k = r->data[i];
int weight = 0;
for (j = 0; j < l->len; ++j)
{
weight += k * l->data[j] + result->data[j+i];
result->data[j+i] = weight % 10;
weight /= 10;
}
while (weight) result->data[j+++i] = weight%10, weight/=10;
if (j+i > len) len = j+i;
}
result->sign = l->sign * r->sign;
result->len = len;
}
void Print(BigNum* it)
{
int curr = it->len-1;
if (it->sign == -1) printf("-");
while (curr>=0) printf("%c", it->data[curr--] + '0');
puts("");
}
char buff[2][505];
BigNum a, b, result;
int main(void)
{
while (scanf("%s%s", buff[0], buff[1])==2)
{
ToBigNum(&a, buff[0]);
ToBigNum(&b, buff[1]);
Zero(&result);
Mul(&result, &a, &b);
Print(&result);
}
return 0;
}
typedef struct BigNum_
{
int len;
int data[1005];
int sign;
} BigNum;
void Zero(BigNum* num)
{
int i = 0;
int* data = num->data;
for (i = 0; i < 1000; ++i) data[i] = 0;
num->sign = 1;
}
void Rev(char* a)
{
char t;
char* b = a;
while (*b++);
b-=2;
while (a<b) t = *a, *a=*b, *b = t, ++a, --b;
}
void ToBigNum(BigNum* num, char* str)
{
int len = 0;
int* data = num->data;
if (*str=='-') num->sign = -1, str++;
else num->sign = 1;
Rev(str);
for (;*str;data[len++]=*str++-'0');
if (len == 0) data[0]=0, num->len = 1;
else num->len=len;
}
void Mul(BigNum* result ,BigNum* l, BigNum* r)
{
int i, j;
int len = -1;
for (i = 0; i < r->len; ++i)
{
int k = r->data[i];
int weight = 0;
for (j = 0; j < l->len; ++j)
{
weight += k * l->data[j] + result->data[j+i];
result->data[j+i] = weight % 10;
weight /= 10;
}
while (weight) result->data[j+++i] = weight%10, weight/=10;
if (j+i > len) len = j+i;
}
result->sign = l->sign * r->sign;
result->len = len;
}
void Print(BigNum* it)
{
int curr = it->len-1;
if (it->sign == -1) printf("-");
while (curr>=0) printf("%c", it->data[curr--] + '0');
puts("");
}
char buff[2][505];
BigNum a, b, result;
int main(void)
{
while (scanf("%s%s", buff[0], buff[1])==2)
{
ToBigNum(&a, buff[0]);
ToBigNum(&b, buff[1]);
Zero(&result);
Mul(&result, &a, &b);
Print(&result);
}
return 0;
}