#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define pb push_back
ll Extend_Euclidean(ll a , ll b , ll &x , ll &y)
{
if(b==0) {
x=1;
y=0;
return a;
}
ll x1,y1;
ll g=Extend_Euclidean(b,a%b,x1,y1);
x=y1;
y=x1-y1*(a/b);
return g;
}
signed main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
ll t;
cin>>t;
while(t--)
{
vector<pair<ll,ll>> input;
ll n, lcm=1,result=0;
cin >> n;
for(ll i=0;i<n;i++)
{
ll a , m;
cin >> m >> a;
lcm *= m;
input.pb({m,a});
}
for(ll i=0;i<n;i++)
{
ll M = lcm/input[i].first;
ll k, y;
ll g=Extend_Euclidean(M,input[i].first,y,k);
if(g!=1) {cout<<"NO SOLUTION"<<"\n";break;}
y = ( y % input[i].first + input[i].first ) % input[i].first;
result += M * y * input[i].second % lcm;
}
cout<<result % lcm<<"\n" ;
}
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgcGIgcHVzaF9iYWNrCgpsbCBFeHRlbmRfRXVjbGlkZWFuKGxsIGEgLCBsbCBiICwgbGwgJnggLCBsbCAmeSkKewoJaWYoYj09MCkgewoJCXg9MTsKCQl5PTA7CgkJcmV0dXJuIGE7Cgl9CgoJbGwgeDEseTE7CglsbCBnPUV4dGVuZF9FdWNsaWRlYW4oYixhJWIseDEseTEpOwoJeD15MTsKCXk9eDEteTEqKGEvYik7CglyZXR1cm4gZzsKfQoKc2lnbmVkIG1haW4oKQp7CiAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgY2luLnRpZShOVUxMKTsKICBjb3V0LnRpZShOVUxMKTsKCiAgbGwgdDsKICBjaW4+PnQ7CiAgCiAgd2hpbGUodC0tKQogIHsKICAgICB2ZWN0b3I8cGFpcjxsbCxsbD4+IGlucHV0OwoKICAgICBsbCBuLCBsY209MSxyZXN1bHQ9MDsKICAgICBjaW4gPj4gbjsKCiAgICAgIGZvcihsbCBpPTA7aTxuO2krKykKICAgICAgewogICAgICAJIGxsIGEgLCBtOwogICAgICAJIGNpbiA+PiBtID4+IGE7CiAgICAgICAgIAogICAgICAgICBsY20gKj0gbTsKCiAgICAgICAgaW5wdXQucGIoe20sYX0pOwogICAgICB9CiAgICAgCiAgICAgIGZvcihsbCBpPTA7aTxuO2krKykKICAgICAgewogICAgICAJbGwgTSA9IGxjbS9pbnB1dFtpXS5maXJzdDsKICAgICAgCWxsIGssIHk7CiAgICAgICAgbGwgZz1FeHRlbmRfRXVjbGlkZWFuKE0saW5wdXRbaV0uZmlyc3QseSxrKTsKICAgICAgICBpZihnIT0xKSB7Y291dDw8Ik5PIFNPTFVUSU9OIjw8IlxuIjticmVhazt9CgogICAgICAJeSA9ICggeSAlIGlucHV0W2ldLmZpcnN0ICsgaW5wdXRbaV0uZmlyc3QgKSAlIGlucHV0W2ldLmZpcnN0OwoKICAgICAgICByZXN1bHQgKz0gTSAqIHkgKiBpbnB1dFtpXS5zZWNvbmQgJSBsY207CgogICAgICB9CgogICAgICBjb3V0PDxyZXN1bHQgJSBsY208PCJcbiIgOwoKCgogIH0KICByZXR1cm4gMDsKfQ==