#include #include #include #include int t; int n,m; std::pair data[30]; long long work(int x) { int i,j,k; long long answer = 0; for(i = 0;i < n && x;++i) { k = data[i].second; if(k > x) k = x; answer += (x + x - k + 1) * k / 2 * data[i].first; x -= k; } return answer; } long long solve(void) { int l,r; int x1,x2; long long m1,m2; long long answer = 0; l = 0; r = m; while(l < r) { x1 = l + (r - l) / 3; x2 = r - (r - l) / 3; m1 = work(x1); m2 = work(x2); answer = std::max(answer,std::max(m1,m2)); if(m1 == m2) l = x1 + 1,r = x2 - 1; else if(m1 > m2) r = x2 - 1; else if(m1 < m2) l = x1 + 1; } return answer; } int main(void) { int i,j,k; int answer; //freopen("x.in","r",stdin); scanf("%d",&t); while(t--) { scanf("%d",&n); m = 0; for(i = 0;i < n;++i) scanf("%d %d",&data[i].first,&data[i].second),m += data[i].second; std::sort(data,data + n,std::greater >()); printf("%I64d\n",solve()); } return 0; }