#include <stdio.h>
#include <math.h>
#include <algorithm>
using namespace std;
FILE *f1=fopen("progresie.in", "r");
FILE *f2=fopen("progresie.out", "w");
int t;
long long n, r;
long long v(long long n, long long r)
{
int ok;
long long k, j, dec, nr, st, dr, rad;
///k- numar bloc
///dec- decalajul fata de prima valoare din bloc (valoarea cu care poti muta la dreapta toata secventa)
///nr- termen curent progresie
///st, dr -marigini bloc curent
for(k=1; ;k++)
{
nr=k*(k-1)+1; dec=k-1; ///dec daca st s-ar muta pe dr
ok=1;
for(j=1; (j<n)&&ok; j++)
{
nr+=r; rad=sqrt(nr); if(rad*rad!=nr) rad++;
st=rad*(rad-1)+1; dr=rad*rad;
if(st<=nr) dec=min(dec, dr-nr); ///actualizezi decalajul maxim la dr
else
{
if(nr+dec>=st) ///daca poti muta secventa la dr a.i. nr sa pice in interiorul urmatorului bloc pe prima poz, o faci
{
dec-=(st-nr);
nr=st;
}
else ok=0;
}
}
if(ok) return nr-r*(n-1);
}
}
int main()
{
fscanf(f1, "%d", &t);
while(t--)
{
fscanf(f1, "%d%d", &n, &r);
fprintf(f2, "%I64d\n", v(n, r));
}
return 0;
}