#include <iostream>
using namespace std;
int main() {
int k; // Количество заданий
cin >> k;
for(int l = 0; l < k; l++)
{
int m, n; // Размер шахматной доски
cin >> m >> n;
int res = 0; // Количество кусков, на которые мы можем разделить доску
for(int i = min(m, n); i >= 0; i--) // Находим количество квадратов
{
res += (m - i) * (n - i);
}
cout << res; // Вывод количества квадратных досок
res = res * - 1; // Чтобы не учитывать квадратные доски, сразу вычитаем их
for(int i = m - 1; i >= 0; i--) // Находим количество прямоугольников
{
for(int j = n - 1; j >= 0; j--)
{
res += (m - i) * (n - j);
}
}
cout << ' ' << res << endl; // Вывод количества прямоугольников
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG1haW4oKSB7CglpbnQgazsgLy8g0JrQvtC70LjRh9C10YHRgtCy0L4g0LfQsNC00LDQvdC40LkKCWNpbiA+PiBrOwoJZm9yKGludCBsID0gMDsgbCA8IGs7IGwrKykKCXsKCQlpbnQgbSwgbjsgLy8g0KDQsNC30LzQtdGAINGI0LDRhdC80LDRgtC90L7QuSDQtNC+0YHQutC4CgkJY2luID4+IG0gPj4gbjsKCQlpbnQgcmVzID0gMDsgLy8g0JrQvtC70LjRh9C10YHRgtCy0L4g0LrRg9GB0LrQvtCyLCDQvdCwINC60L7RgtC+0YDRi9C1INC80Ysg0LzQvtC20LXQvCDRgNCw0LfQtNC10LvQuNGC0Ywg0LTQvtGB0LrRgwoJCWZvcihpbnQgaSA9IG1pbihtLCBuKTsgaSA+PSAwOyBpLS0pIC8vINCd0LDRhdC+0LTQuNC8INC60L7Qu9C40YfQtdGB0YLQstC+INC60LLQsNC00YDQsNGC0L7QsgoJCXsKCQkJcmVzICs9IChtIC0gaSkgKiAobiAtIGkpOwoJCX0KCQljb3V0IDw8IHJlczsgLy8g0JLRi9Cy0L7QtCDQutC+0LvQuNGH0LXRgdGC0LLQsCDQutCy0LDQtNGA0LDRgtC90YvRhSDQtNC+0YHQvtC6CgkJcmVzID0gcmVzICogLSAxOyAvLyDQp9GC0L7QsdGLINC90LUg0YPRh9C40YLRi9Cy0LDRgtGMINC60LLQsNC00YDQsNGC0L3Ri9C1INC00L7RgdC60LgsINGB0YDQsNC30YMg0LLRi9GH0LjRgtCw0LXQvCDQuNGFCgkJZm9yKGludCBpID0gbSAtIDE7IGkgPj0gMDsgaS0tKSAvLyDQndCw0YXQvtC00LjQvCDQutC+0LvQuNGH0LXRgdGC0LLQviDQv9GA0Y/QvNC+0YPQs9C+0LvRjNC90LjQutC+0LIKCQl7CgkJCWZvcihpbnQgaiA9IG4gLSAxOyBqID49IDA7IGotLSkgCgkJCXsKCQkJCXJlcyArPSAobSAtIGkpICogKG4gLSBqKTsKCQkJfQoJCX0KCQljb3V0IDw8ICcgJyA8PCByZXMgPDwgZW5kbDsgLy8g0JLRi9Cy0L7QtCDQutC+0LvQuNGH0LXRgdGC0LLQsCDQv9GA0Y/QvNC+0YPQs9C+0LvRjNC90LjQutC+0LIKCX0KCXJldHVybiAwOwp9