
#include <stdlib.h> /* exit */
#include <string.h> /* strcmp, memset */
#include <stdio.h> /* fprintf, fputc, fgets */
#include <limits.h> /* INT_MAX ... */
#include <ctype.h> /* isspace, isalpha, isupper, islower, isdigit */
#include <set>
#include <queue>
#include <string>
#include <map>

using namespace std;

#define min(a, b) ((a) < (b) ? (a) : (b))
#define max(a, b) ((a) < (b) ? (b) : (a))


int get[100005], price[100005], sell[100005];

map<int,int> M;
map<int,int>::iterator it;

int run()
{
	M.clear();
	int i,n,have,tot=0;
	
	scanf("%d",&n);
	
	for(i=0;i<n;i++)
	{
		scanf("%d %d %d",&get[i],&price[i],&sell[i]);
	}
	
	//printf("%d\n",n);
	
	for(i=0;i<n;i++)
	{
		//printf("%d %d %d\n",get[i],price[i],sell[i]);
	}
	
	for(i=n-1;i>=0;i--)
	{
		have=get[i];
		M[price[i]]+=sell[i];
		while(have>0&&M.size()>0)
		{
			it=M.end();
			it--;
			if(it->second<=have)
			{
				have-=it->second;
				//printf("%d %d\n",it->first,it->second);
				tot+=it->second*it->first;
				M.erase(it);
			}
			else
			{
				it->second-=have;
				tot+=have*it->first;
				//printf("%d %d\n",it->first,it->second);
				have=0;
			}
		}
	}
	
	for(it=M.begin();it!=M.end();it++)
	{
		//printf("%d %d\n",it->first,it->second);
	}
	
	printf("%d\n",tot);
	
	
	return 0;
}


int main()
{
    int i,t;
    
    scanf("%d",&t);
         
    for(i=0;i<t;i++)
    {
    	//printf("%d\n",i);
    	run();
    	
    }
    
    exit(0);
}
