#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> pint;
#define pb push_back
#define fi first
#define se second
#define all(x) (x).begin(), (x).end()
#define allr(x) (x).rbegin(), (x).rend()
#define sz(x) (int)(x).size()
#define endl '\n'
#define yes cout << "YES" << endl;
#define no cout << "NO" << endl;
void AlanXO() {
#ifndef ONLINE_JUDGE
freopen("input.txt", "r", stdin), freopen("output.txt", "w", stdout);
#endif
}
void solve() {
ll x,y,n;
cin >> x >> y;
n= max(x,y);
bool rowGreater = x>y? true: false;
if(rowGreater){
if(n%2==0){
cout << (n*n-n+1)+abs(x-y) << endl;
}else{
cout << (n*n-n+1)-abs(x-y) << endl;
}
}else{
if(n%2==0){
cout << (n*n-n+1)-abs(x-y) << endl;
}else{
cout << (n*n-n+1)+abs(x-y) << endl;
}
}
}
int main() {
AlanXO();
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
int t = 1;
cin >> t;
while (t--) {
solve();
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdHlwZWRlZiBsb25nIGxvbmcgbGw7CnR5cGVkZWYgcGFpcjxpbnQsIGludD4gcGludDsKI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBmaSBmaXJzdAojZGVmaW5lIHNlIHNlY29uZAojZGVmaW5lIGFsbCh4KSAoeCkuYmVnaW4oKSwgKHgpLmVuZCgpCiNkZWZpbmUgYWxscih4KSAoeCkucmJlZ2luKCksICh4KS5yZW5kKCkKI2RlZmluZSBzeih4KSAoaW50KSh4KS5zaXplKCkKI2RlZmluZSBlbmRsICdcbicKI2RlZmluZSB5ZXMgY291dCA8PCAiWUVTIiA8PCBlbmRsOwojZGVmaW5lIG5vIGNvdXQgPDwgIk5PIiA8PCBlbmRsOwoKdm9pZCBBbGFuWE8oKSB7CiNpZm5kZWYgT05MSU5FX0pVREdFCiAgICBmcmVvcGVuKCJpbnB1dC50eHQiLCAiciIsIHN0ZGluKSwgZnJlb3Blbigib3V0cHV0LnR4dCIsICJ3Iiwgc3Rkb3V0KTsKI2VuZGlmCn0KCnZvaWQgc29sdmUoKSB7CiAgICBsbCB4LHksbjsKICAgIGNpbiA+PiB4ID4+IHk7CiAgICBuPSBtYXgoeCx5KTsKICAgIGJvb2wgcm93R3JlYXRlciA9IHg+eT8gdHJ1ZTogZmFsc2U7CiAgICBpZihyb3dHcmVhdGVyKXsKICAgICAgICBpZihuJTI9PTApewogICAgICAgICAgICBjb3V0IDw8IChuKm4tbisxKSthYnMoeC15KSA8PCBlbmRsOwogICAgICAgIH1lbHNlewogICAgICAgICAgICBjb3V0IDw8IChuKm4tbisxKS1hYnMoeC15KSA8PCBlbmRsOwogICAgICAgIH0KICAgIH1lbHNlewogICAgICAgIGlmKG4lMj09MCl7CiAgICAgICAgICAgIGNvdXQgPDwgKG4qbi1uKzEpLWFicyh4LXkpIDw8IGVuZGw7CiAgICAgICAgfWVsc2V7CiAgICAgICAgICAgIGNvdXQgPDwgKG4qbi1uKzEpK2Ficyh4LXkpIDw8IGVuZGw7CiAgICAgICAgfQogICAgfQp9CgppbnQgbWFpbigpIHsKICAgIEFsYW5YTygpOwogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKG51bGxwdHIpOwogICAgY291dC50aWUobnVsbHB0cik7CiAgICBpbnQgdCA9IDE7CiAgICBjaW4gPj4gdDsKICAgIHdoaWxlICh0LS0pIHsKICAgICAgICBzb2x2ZSgpOwogICAgfQp9