#include <iostream>
#include <bits/stdc++.h>
using namespace std;
void reverse(char *str){
int i = 0;
int j = strlen(str)-1;
while(i < j){
char c = str[i];
str[i] = str[j];
str[j] = c;
i++;
j--;
}
return ;
}
void swap2(char *str1, char *str2)
{
char *temp = (char *)malloc((strlen(str1) + 1) * sizeof(char));
strcpy(temp, str1);
strcpy(str1, str2);
strcpy(str2, temp);
free(temp);
}
void shiftRight(char *arr,int n)
{
char tmp[30001];
int i;
// cout << arr <<endl;
for( i =0; i < n ;i++)
tmp[i] ='0';
int index =0;
int k;
// for( k =i ; k < i+strlen(arr)-1; k++){
// tmp[k] = arr[index];
// index++;
// }
k = i;
//cout << k << "before " <<i+strlen(arr)-1<<endl;
while(k <= i+strlen(arr)-1){
tmp[k] = arr[index];
index++;
k++;
}
tmp[k] = '\0';
// cout <<"222"<< tmp <<endl;
int j;
// cout << endl;
strcpy(arr, tmp);
//cout << arr <<endl;
}
void add(char *num1, char *num2){
int num;
int carry = 0;
int dig;
if(strlen(num2) > strlen(num1))
swap2(num1, num2);
int i ;
for( i = 0; i < strlen(num2); i++)
{
num = num1[i]-'0' + num2[i]-'0' +carry;
dig = num %10;
carry = num/10;
num1[i] = dig +'0';
}
while(i < strlen(num1)){
num = num1[i]-'0' +carry;
dig = num %10;
carry = num/10;
num1[i] = dig+'0';
i++;
}
while(carry > 0){
dig = carry %10;
carry = carry/10;
num1[i] = dig+'0';
i++;
}
num1[i] = '\0';
}
void mul(char *num1, char *num2){
char prev[30001];
char curr[30001];
for(int i = 0 ; i < 30001; i++)
prev[i] = '0';
int carry = 0;
int num;
int dig;
int k =0;
int i;
int j;
int tot_l = 0;
for( i =0; i < strlen(num2); i++){
k = 0;
for(j =0; j < strlen(num1);j++){
num = (num1[i]-'0') * (num2[j]-'0')+carry;
carry = num/10;
dig = num % 10;
curr[k] = dig+'0';
k++;
tot_l++;
}
while(carry > 0){
dig = carry %10;
carry = carry/10;
curr[k] = dig + '0';
k++;
tot_l++;
}
shiftRight(curr,i);
add(prev,curr);
}
prev[tot_l] = '\0';
cout << prev;
}
int main() {
int tes;
cin >> tes;
char arr[30001];
char num1[10001];
char num2[10001];
while(tes--){
cin >> num1 >> num2;
reverse(num1);
reverse(num2);
mul(num1, num2);
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCgoKCnZvaWQgcmV2ZXJzZShjaGFyICpzdHIpewoJCglpbnQgIGkgPSAwOwoJaW50ICBqID0gc3RybGVuKHN0ciktMTsKCQoJd2hpbGUoaSA8IGopewoJCQoJCWNoYXIgYyA9IHN0cltpXTsKCQlzdHJbaV0gPSBzdHJbal07CgkJc3RyW2pdID0gYzsKCQlpKys7CgkJai0tOwoJCQoJfQoJcmV0dXJuIDsKCQoJCn0KCgp2b2lkIHN3YXAyKGNoYXIgKnN0cjEsIGNoYXIgKnN0cjIpCnsKICBjaGFyICp0ZW1wID0gKGNoYXIgKiltYWxsb2MoKHN0cmxlbihzdHIxKSArIDEpICogc2l6ZW9mKGNoYXIpKTsKICBzdHJjcHkodGVtcCwgc3RyMSk7CiAgc3RyY3B5KHN0cjEsIHN0cjIpOwogIHN0cmNweShzdHIyLCB0ZW1wKTsKICBmcmVlKHRlbXApOwp9ICAKIAp2b2lkIHNoaWZ0UmlnaHQoY2hhciAqYXJyLGludCBuKQp7CgkKCWNoYXIgdG1wWzMwMDAxXTsKCWludCBpOwoJCgkKCS8vIGNvdXQgPDwgYXJyIDw8ZW5kbDsKCWZvciggaSA9MDsgaSA8IG4gO2krKykKCQl0bXBbaV0gPScwJzsKCQkKCQlpbnQgaW5kZXggPTA7CgkJaW50IGs7CgkJCgkJCgkJLy8gZm9yKCBrID1pIDsgayA8IGkrc3RybGVuKGFyciktMTsgaysrKXsKCQkvLyAJdG1wW2tdID0gYXJyW2luZGV4XTsKCQkvLyAJaW5kZXgrKzsKCQkvLyB9CgkJCgkJIGsgPSBpOwoJCSAKCQkgCgkJIC8vY291dCA8PCBrIDw8ICJiZWZvcmUgIiA8PGkrc3RybGVuKGFyciktMTw8ZW5kbDsKCQl3aGlsZShrIDw9IGkrc3RybGVuKGFyciktMSl7CgkJCQoJCQkgdG1wW2tdID0gYXJyW2luZGV4XTsKCQkJaW5kZXgrKzsKCQkJaysrOwoJCX0KCQkKCQkKCQkKCQl0bXBba10gPSAnXDAnOwoJCgkJLy8gY291dCA8PCIyMjIiPDwgdG1wIDw8ZW5kbDsKCQkKCQlpbnQgajsKCQkvLyBjb3V0IDw8IGVuZGw7CgkJCgkJCgkJCQoJIHN0cmNweShhcnIsIHRtcCk7CgkgLy9jb3V0IDw8IGFyciA8PGVuZGw7CgkKCQp9CgoKdm9pZCBhZGQoY2hhciAqbnVtMSwgY2hhciAqbnVtMil7CgkKCQoJIGludCBudW07CgkgaW50IGNhcnJ5ID0gMDsKCSBpbnQgZGlnOwoJIAoJIAoJIAoJIGlmKHN0cmxlbihudW0yKSA+IHN0cmxlbihudW0xKSkKCQlzd2FwMihudW0xLCBudW0yKTsKCQkKCQlpbnQgaSA7CgkJZm9yKCBpID0gMDsgaSA8IHN0cmxlbihudW0yKTsgaSsrKQoJCSAgICB7CgkJICAgIAkKCQkgICAgCQoJCSAgICAJbnVtID0gbnVtMVtpXS0nMCcgKyBudW0yW2ldLScwJyArY2Fycnk7CgkJICAgIAlkaWcgPSBudW0gJTEwOwoJCSAgICAJY2FycnkgPSBudW0vMTA7CgkJICAgIAkKCQkgICAgCW51bTFbaV0gPSBkaWcgKycwJzsKCQkgICAgfQoJCSAgICAKCQkgICAKCQkgICB3aGlsZShpIDwgc3RybGVuKG51bTEpKXsKCQkgICAJCgkJICAgIAludW0gPSBudW0xW2ldLScwJyAgK2NhcnJ5OwoJCSAgICAJZGlnID0gbnVtICUxMDsKCQkgICAgCWNhcnJ5ID0gbnVtLzEwOwoJCSAgICAJCgkJICAgIAludW0xW2ldID0gZGlnKycwJzsKCQkgICAgCWkrKzsKCQkgICB9CgkJICAgCgkJICAgd2hpbGUoY2FycnkgPiAwKXsKCQkgICAJCgkJICAgIAoJCSAgICAJZGlnID0gY2FycnkgJTEwOwoJCSAgICAJY2FycnkgPSBjYXJyeS8xMDsKCQkgICAgCQoJCSAgICAJbnVtMVtpXSA9IGRpZysnMCc7CgkJICAgIAlpKys7CgkJICAgICAgCgkJICAgfQoJCSAgIAoJCSAgIG51bTFbaV0gPSAnXDAnOwoJCQkKCQkKCSAKCQoJCn0KCnZvaWQgbXVsKGNoYXIgKm51bTEsIGNoYXIgKm51bTIpewoJCgkgIGNoYXIgcHJldlszMDAwMV07CgkgIGNoYXIgY3VyclszMDAwMV07CgkgIAoJICAKCSAgZm9yKGludCBpID0gMCA7IGkgPCAzMDAwMTsgaSsrKQoJCXByZXZbaV0gPSAnMCc7CgkgIAoJICAKCSAgaW50IGNhcnJ5ID0gMDsKCSAgaW50IG51bTsKCSAgaW50IGRpZzsKCSAgCgkgIGludCBrID0wOwoJICBpbnQgaTsKCSAgaW50IGo7CgkgIGludCB0b3RfbCA9IDA7CgkgIGZvciggaSA9MDsgaSA8IHN0cmxlbihudW0yKTsgaSsrKXsKCSAgCSBrID0gMDsKCSAgCWZvcihqID0wOyBqIDwgc3RybGVuKG51bTEpO2orKyl7CgkgIAkJICBudW0gPSAobnVtMVtpXS0nMCcpICogKG51bTJbal0tJzAnKStjYXJyeTsKCSAgCQkgIGNhcnJ5ID0gbnVtLzEwOwoJICAJCSAgZGlnID0gbnVtICUgMTA7CgkgIAkJICBjdXJyW2tdID0gZGlnKycwJzsKCSAgCQkgICBrKys7CgkgIAkJICAgdG90X2wrKzsKCSAgCSAgIH0KCSAgCSAgIAoJICAJICAgd2hpbGUoY2FycnkgPiAwKXsKCSAgCSAgIAkKCSAgCSAgIAlkaWcgPSBjYXJyeSAlMTA7CgkgIAkgICAJY2FycnkgPSBjYXJyeS8xMDsKCSAgCSAgICBjdXJyW2tdID0gZGlnICsgJzAnOwoJICAJICAgIGsrKzsKCSAgCSAgICB0b3RfbCsrOwoJICAJICAgCQoJICAJICAgfQoJICAJICAgCgkgIAkKCSAgCSBzaGlmdFJpZ2h0KGN1cnIsaSk7CgkgIAkgIAoJICAJICBhZGQocHJldixjdXJyKTsKCSAgCQoJICB9CgkgIAoJICBwcmV2W3RvdF9sXSA9ICdcMCc7CgkgIGNvdXQgPDwgcHJldjsKCSAgCgkgIAoJCgkKCQp9CmludCBtYWluKCkgewoKCQoJCQoJaW50IHRlczsKCWNpbiA+PiB0ZXM7CgljaGFyIGFyclszMDAwMV07CiAgICBjaGFyIG51bTFbMTAwMDFdOwogICAgY2hhciBudW0yWzEwMDAxXTsKCQoJd2hpbGUodGVzLS0pewoJCQoJCWNpbiA+PiBudW0xID4+IG51bTI7CgkJCgkJcmV2ZXJzZShudW0xKTsKCQlyZXZlcnNlKG51bTIpOwoJCQoJCW11bChudW0xLCBudW0yKTsKCQkKCQkKCQkKCX0KCXJldHVybiAwOwoKCn0=