#include<bits/stdc++.h>
using namespace std;
long long dp[1000001];
long long mini(long long x,long long y)
{
if(x<y)
return x;
return y;
}
int main()
{
int t;
cin>>t;
while(t--)
{
int n;
cin>>n;
vector< pair<int,int> > vec;
for(int i=0;i<n;i++)
{
int x,y;
cin>>x>>y;
vec.push_back({x,y});
}
int m;
cin>>m;
vector< pair<int, long long int> > carpet;
for(int i=0;i<m;i++)
{
int x;
long long y;
cin>>x>>y;
carpet.push_back({x,y});
}
for(int i=1;i<=1000000;i++)
dp[i]=100000000000000;
dp[0]=0;
for(int i=1;i<=1000000;i++)
{
for(int j=0;j<m;j++)
{
int len = carpet[j].first;
long long int cost = carpet[j].second;
if(len>=i)
dp[i]=mini(dp[i],cost);
else
dp[i]=mini(dp[i],dp[i-len]+cost);
}
}
long long ans=0;
for(int i=0;i<n-1;i++)
{
int x1 = vec[i].first;
int y1 = vec[i].second;
int x2 = vec[i+1].first;
int y2 = vec[i+1].second;
long long val = ((x2-x1)*(x2-x1))+((y2-y1)*(y2-y1));
double dist = sqrt(val);
long long temp = ceil(dist);
ans+=dp[temp];
}
int x1 = vec[n-1].first;
int y1 = vec[n-1].second;
int x2 = vec[0].first;
int y2 = vec[0].second;
long long val = ((x2-x1)*(x2-x1))+((y2-y1)*(y2-y1));
double dist = sqrt(val);
long long temp = ceil(dist);
ans+=dp[temp];
cout<<ans<<endl;
}
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKbG9uZyBsb25nIGRwWzEwMDAwMDFdOwpsb25nIGxvbmcgbWluaShsb25nIGxvbmcgeCxsb25nIGxvbmcgeSkKewoJaWYoeDx5KQoJCXJldHVybiB4OwoJcmV0dXJuIHk7Cn0KaW50IG1haW4oKQp7CglpbnQgdDsKCWNpbj4+dDsKCXdoaWxlKHQtLSkKCXsKCQlpbnQgbjsKCQljaW4+Pm47CgkJdmVjdG9yPCBwYWlyPGludCxpbnQ+ID4gdmVjOwoJCWZvcihpbnQgaT0wO2k8bjtpKyspCgkJewoJCQlpbnQgeCx5OwoJCQljaW4+Png+Pnk7CgkJCXZlYy5wdXNoX2JhY2soe3gseX0pOwoJCX0KCQlpbnQgbTsKCQljaW4+Pm07CgkJdmVjdG9yPCBwYWlyPGludCwgbG9uZyBsb25nIGludD4gPiBjYXJwZXQ7CgkJZm9yKGludCBpPTA7aTxtO2krKykKCQl7CgkJCWludCB4OwoJCQlsb25nIGxvbmcgeTsKCQkJY2luPj54Pj55OwoJCQljYXJwZXQucHVzaF9iYWNrKHt4LHl9KTsKCQl9CgkJZm9yKGludCBpPTE7aTw9MTAwMDAwMDtpKyspCgkJCWRwW2ldPTEwMDAwMDAwMDAwMDAwMDsKCQlkcFswXT0wOwoJCWZvcihpbnQgaT0xO2k8PTEwMDAwMDA7aSsrKQoJCXsKCQkJZm9yKGludCBqPTA7ajxtO2orKykKCQkJewoJCQkJaW50IGxlbiA9IGNhcnBldFtqXS5maXJzdDsKCQkJCWxvbmcgbG9uZyBpbnQgY29zdCA9IGNhcnBldFtqXS5zZWNvbmQ7CgkJCQlpZihsZW4+PWkpCgkJCQkJZHBbaV09bWluaShkcFtpXSxjb3N0KTsKCQkJCWVsc2UKCQkJCQlkcFtpXT1taW5pKGRwW2ldLGRwW2ktbGVuXStjb3N0KTsKCQkJfQoJCX0KCQlsb25nIGxvbmcgYW5zPTA7CgkJZm9yKGludCBpPTA7aTxuLTE7aSsrKQoJCXsKCQkJaW50IHgxID0gdmVjW2ldLmZpcnN0OwoJCQlpbnQgeTEgPSB2ZWNbaV0uc2Vjb25kOwoJCQlpbnQgeDIgPSB2ZWNbaSsxXS5maXJzdDsKCQkJaW50IHkyID0gdmVjW2krMV0uc2Vjb25kOwoJCQlsb25nIGxvbmcgdmFsID0gKCh4Mi14MSkqKHgyLXgxKSkrKCh5Mi15MSkqKHkyLXkxKSk7CgkJCWRvdWJsZSBkaXN0ID0gc3FydCh2YWwpOwoJCQlsb25nIGxvbmcgdGVtcCA9IGNlaWwoZGlzdCk7CgkJCWFucys9ZHBbdGVtcF07CgkJfQoJCWludCB4MSA9IHZlY1tuLTFdLmZpcnN0OwoJCQlpbnQgeTEgPSB2ZWNbbi0xXS5zZWNvbmQ7CgkJCWludCB4MiA9IHZlY1swXS5maXJzdDsKCQkJaW50IHkyID0gdmVjWzBdLnNlY29uZDsKCQkJbG9uZyBsb25nIHZhbCA9ICgoeDIteDEpKih4Mi14MSkpKygoeTIteTEpKih5Mi15MSkpOwoJCQlkb3VibGUgZGlzdCA9IHNxcnQodmFsKTsKCQkJbG9uZyBsb25nIHRlbXAgPSBjZWlsKGRpc3QpOwoJCQlhbnMrPWRwW3RlbXBdOwoJCWNvdXQ8PGFuczw8ZW5kbDsKCX0KCXJldHVybiAwOwp9IA==