#include<bits/stdc++.h>
using namespace std;

const int N=5e4+1e3+7;

map<int,int>mp;

int T,k,c[N],d[N],m[N],p[N],e[N],R[N],E[N];

int main()
{
	scanf("%d",&T);
	while(T--)
	{
		scanf("%d",&k);
		for(int i=1;i<=k;i++)
			scanf("%d%d%d%d",&c[i],&d[i],&m[i],&p[i]);
		for(int i=1;i<k;i++)
			scanf("%d%d%d",&e[i],&R[i],&E[i]);
		mp.clear();
		int mnc=1e9,enow=0,Es=0;
		long long ans=0;
		bool ok=1;
		for(int i=1;i<=k;i++)
		{
			mnc=min(mnc+R[i-1],c[i]);
			if(p[i]+enow<d[i])
			{
				ok=0;
				break;
			}
			while(d[i]&&enow!=0&&p[i])
			{
				int mnw,tot,cho;
				if(mp.begin()->first<m[i]+mnc-Es)
					mnw=mp.begin()->first+Es,tot=mp.begin()->second,mp.erase(mp.begin()),cho=1;
				else
					mnw=m[i]+mnc,tot=p[i],cho=2;
				int nd=min(tot,d[i]);
				d[i]-=nd;
				tot-=nd;
				enow-=nd;
				if(cho==1&&tot)
					mp[mnw]=tot;
				if(cho==2)
					p[i]-=nd;
				ans+=1ll*mnw*nd;
			}
			while(d[i]&&enow!=0)
			{
				int mnw,tot;
				mnw=mp.begin()->first+Es,tot=mp.begin()->second,mp.erase(mp.begin());
				int nd=min(tot,d[i]);
				d[i]-=nd;
				tot-=nd;
				enow-=nd;
				if(tot)
					mp[mnw]=tot;
				ans+=1ll*mnw*nd;
			}
			while(d[i]&&p[i])
			{
				int mnw,tot;
				mnw=m[i]+mnc,tot=p[i];
				int nd=min(tot,d[i]);
				d[i]-=nd;
				tot-=nd;
				p[i]-=nd;
				ans+=1ll*mnw*nd;
			}
			while(enow>e[i])
			{
				map<int,int>::iterator it=mp.end();
				it--;
				int nd=enow-e[i];
				nd=min(nd,it->second);
				it->second-=nd,enow-=nd;
				if(!(it->second))
					mp.erase(it);
			}
			int res=0;
			while(enow)
			{
				map<int,int>::iterator it=mp.end();
				it--;
				if(it->first+Es<m[i]+mnc)
					break;
				int nd=min(p[i],it->second);
				p[i]-=nd;
				res+=nd;
				it->second-=nd;
				if(!it->second)
					mp.erase(it);
			}
			if(res)
				mp[m[i]+mnc-Es]=res;
			Es+=E[i];
		}
		if(!ok)
			puts("-1");
		else
			printf("%lld\n",ans);
	}
}
