#include <iostream>
#include <string>
#include <cstdlib>
#include <cstdio>
#include <sstream>
using namespace std;
string l1,l2;
char l3[1000000],l4[1000000];
inline void odwroc(string &x){
int dlugosc = x.length();
for (int i = 0; i < dlugosc / 2; i++) swap(x[i],x[dlugosc-1-i]);
}
inline void usunzera(string &x){
while (x[0]=='0')x.erase(0,1);
}
inline string dodawanie(string x, string y){
string w,ww;
int a,b,c,d,e,pamiec = 0;
a = x.length() - 1;
b = y.length() - 1;
if(a > b) y.insert(0, a - b, '0');
else if(b > a) {x.insert(0, b - a, '0'); a = b;}
for(int i = a; i >= 0; i--){
c = x[i] - '0';
d = y[i] - '0';
e = c + d + pamiec;
if(e > 9){
pamiec = e / 10;
e = e % 10;
}
else pamiec = 0;
w = w+ char(e + '0');
}
if(pamiec>0) w.insert(a + 1, 1, '1');
odwroc(w);
return w;
}
inline string mnozenie(string x, string y){
string w,ww;
int pamiec = 0,wynik,liczbamnoz;
if( y.length() >= x.length() ) {x.swap(y);}
for(int i = y.length(); i > 0; i--){
for(int j = x.length(); j > 0; j--){
liczbamnoz = ( (y[i-1]-'0') * (x[j-1]-'0') + pamiec);
wynik = liczbamnoz % 10;
pamiec = liczbamnoz / 10;
w = w + char(wynik + '0');
}
if (pamiec) w = w + char(pamiec + '0');
odwroc(w);
w = w.insert( w.length(), y.length() - i, '0' );
ww = dodawanie(ww,w);
pamiec = 0;
w="";
}
usunzera(ww);
if(ww=="")return "0";
return ww;
}
int main(){
ios_base::sync_with_stdio(0);
int n;
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%s",l3);
scanf("%s",l4);
l1=l3;
l2=l4;
cout<<mnozenie(l1,l2)<<endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8Y3N0ZGxpYj4KI2luY2x1ZGUgPGNzdGRpbz4KI2luY2x1ZGUgPHNzdHJlYW0+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnN0cmluZyBsMSxsMjsKY2hhciBsM1sxMDAwMDAwXSxsNFsxMDAwMDAwXTsKaW5saW5lIHZvaWQgb2R3cm9jKHN0cmluZyAmeCl7CiAgICBpbnQgZGx1Z29zYyA9IHgubGVuZ3RoKCk7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IGRsdWdvc2MgLyAyOyBpKyspIHN3YXAoeFtpXSx4W2RsdWdvc2MtMS1pXSk7Cn0KaW5saW5lIHZvaWQgdXN1bnplcmEoc3RyaW5nICZ4KXsKICAgIHdoaWxlICh4WzBdPT0nMCcpeC5lcmFzZSgwLDEpOwp9CmlubGluZSBzdHJpbmcgZG9kYXdhbmllKHN0cmluZyB4LCBzdHJpbmcgeSl7CiAgICBzdHJpbmcgdyx3dzsKICAgIGludCBhLGIsYyxkLGUscGFtaWVjID0gMDsKICAgIGEgPSB4Lmxlbmd0aCgpIC0gMTsKICAgIGIgPSB5Lmxlbmd0aCgpIC0gMTsKICAgIGlmKGEgPiBiKSB5Lmluc2VydCgwLCBhIC0gYiwgJzAnKTsKICAgIGVsc2UgaWYoYiA+IGEpIHt4Lmluc2VydCgwLCBiIC0gYSwgJzAnKTsgYSA9IGI7fQogICAgZm9yKGludCBpID0gYTsgaSA+PSAwOyBpLS0pewogICAgICAgIGMgPSB4W2ldIC0gJzAnOwogICAgICAgIGQgPSB5W2ldIC0gJzAnOwogICAgICAgIGUgPSBjICsgZCArIHBhbWllYzsKICAgICAgICBpZihlID4gOSl7CiAgICAgICAgICAgIHBhbWllYyA9IGUgLyAxMDsKICAgICAgICAgICAgZSA9IGUgJSAxMDsKICAgICAgICB9CiAgICAgICAgZWxzZSBwYW1pZWMgPSAwOwogICAgICAgIHcgPSB3KyBjaGFyKGUgKyAnMCcpOwogICAgfQogICAgaWYocGFtaWVjPjApIHcuaW5zZXJ0KGEgKyAxLCAxLCAnMScpOwogICAgb2R3cm9jKHcpOwogICAgcmV0dXJuIHc7Cn0KaW5saW5lIHN0cmluZyBtbm96ZW5pZShzdHJpbmcgeCwgc3RyaW5nIHkpewogICAgc3RyaW5nIHcsd3c7CiAgICBpbnQgcGFtaWVjID0gMCx3eW5payxsaWN6YmFtbm96OwogICAgaWYoIHkubGVuZ3RoKCkgPj0geC5sZW5ndGgoKSApIHt4LnN3YXAoeSk7fQogICAgZm9yKGludCBpID0geS5sZW5ndGgoKTsgaSA+IDA7IGktLSl7CiAgICAgICAgZm9yKGludCBqID0geC5sZW5ndGgoKTsgaiA+IDA7IGotLSl7CiAgICAgICAgICAgIGxpY3piYW1ub3ogPSAoICh5W2ktMV0tJzAnKSAqICh4W2otMV0tJzAnKSArIHBhbWllYyk7CiAgICAgICAgICAgIHd5bmlrID0gbGljemJhbW5veiAlIDEwOwogICAgICAgICAgICBwYW1pZWMgPSBsaWN6YmFtbm96IC8gMTA7CiAgICAgICAgICAgIHcgPSB3ICsgY2hhcih3eW5payArICcwJyk7CiAgICAgICAgfQogICAgICAgIGlmIChwYW1pZWMpIHcgPSB3ICsgY2hhcihwYW1pZWMgKyAnMCcpOwogICAgICAgIG9kd3JvYyh3KTsKICAgICAgICB3ID0gdy5pbnNlcnQoIHcubGVuZ3RoKCksIHkubGVuZ3RoKCkgLSBpLCAnMCcgKTsKICAgICAgICB3dyA9IGRvZGF3YW5pZSh3dyx3KTsKICAgICAgICBwYW1pZWMgPSAwOwogICAgICAgIHc9IiI7CiAgICB9CiAgICB1c3VuemVyYSh3dyk7CiAgICBpZih3dz09IiIpcmV0dXJuICIwIjsKICAgIHJldHVybiB3dzsKfQppbnQgbWFpbigpewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsKICAgIGludCBuOwogICAgc2NhbmYoIiVkIiwmbik7CiAgICBmb3IoaW50IGk9MDtpPG47aSsrKXsKICAgICAgICBzY2FuZigiJXMiLGwzKTsKICAgICAgICBzY2FuZigiJXMiLGw0KTsKICAgICAgICBsMT1sMzsKICAgICAgICBsMj1sNDsKICAgICAgICBjb3V0PDxtbm96ZW5pZShsMSxsMik8PGVuZGw7CiAgICB9CiAgICByZXR1cm4gMDsKfQo=