#include<bits/stdc++.h>
using namespace std;

#define ll long long

typedef vector<ll> bignum;

bignum add(bignum a, bignum b) {
	bignum c;
	c.resize(max(a.size(), b.size()));
	//Resize để thêm 0 vào cuối cho những số có độ dài khác nhau
	a.resize(c.size());
	b.resize(c.size());
	ll mem = 0;
    for (int i = 0; i < c.size(); ++i){
        ll sum = mem + a[i] + b[i];
    	c[i] = sum%10;
    	mem = sum/10;
    }
    if(mem > 0) c.push_back(mem);
    return c;
}

bignum subtract(bignum a, bignum b) {
	bignum c;
	c.resize(max(a.size(), b.size()));
	//Resize để thêm 0 vào cuối cho những số có độ dài khác nhau
	a.resize(c.size());
	b.resize(c.size());
	ll mem = 0;
    for (int i = 0; i < c.size(); ++i){
        ll sub = a[i] - b[i] - mem;
        if(sub < 0){
        	mem = 1;
        	sub += 10;
        }else
        	mem = 0;
    	c[i] = sub;
    }
    //loại bỏ các số 0 ở đầu
    while(c.size()>1 && c[c.size()-1] == 0) c.pop_back();
    return c;
}

bignum multiple(bignum a, ll b) {
	bignum c;
	c.resize(a.size());
	ll mem = 0;
    for (int i = 0; i < c.size(); ++i){
        ll mul = mem + a[i]*b;
    	c[i] = mul%10;
    	mem = mul/10;
    }
    while(mem>0){
    	c.push_back(mem%10);
    	mem/=10;
    }
    return c;
}

bignum multipleBig(bignum a, bignum b) {
	bignum c,cnt;
	c.clear();
	c.push_back(0);
	cnt.clear();
	ll mem = 0;
    for (int i = 0; i < b.size(); ++i){
        //nhân từng chữ số của b với a
        bignum tmp = multiple(a,b[i]);
        //Thêm 0 vào đầu
        tmp.insert(tmp.begin(),cnt.begin(), cnt.end());
        //cộng dồn vào kết quả
        c = add(c, tmp);
        cnt.push_back(0);
    }
    return c;
}

// chia lấy phần nguyên
bignum division(bignum a, ll b) {
	bignum c;
	c.resize(a.size());
	ll mem = 0;
    for (int i = c.size()-1; i >=0; i--){
        ll div = mem*10 + a[i];
    	c[i] = div/b;
    	mem = div%b;
    }
    //loại bỏ các số 0 ở đầu
    while(c.size()>1 && c[c.size()-1] == 0) c.pop_back();
    return c;
}
//chia lấy phần dư
ll mod(bignum a, ll b) {
	ll mem = 0;
    for (int i = a.size()-1; i >=0; i--){
        ll div = mem*10 + a[i];
    	mem = div%b;
    }
    return mem;
}
bignum toBignum(string a){
	bignum c;
	c.clear();
	for(int i = a.size()-1; i >=0; i--)
		c.push_back(a[i] - 48);
	return c;
}

string toString(bignum a){
	string s = "";
	for(int i = a.size()-1; i >=0; i--)
		s += char(a[i]+48);
	return s;
}

int main() {
	string a,b;
	cin>>a>>b;
	bignum A = toBignum(a);
	bignum B = toBignum(b);
	// bignum C = add(A,B);
	// bignum C = subtract(A,B);
	bignum C = multipleBig(A, B);

	// bignum C = division(A, 19);
	// ll c = mod(A,19);
	// cout<<c;
	cout<<toString(C);
}