#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <vector>
using namespace std;
//英语 看博友分析 抄博友程序 动态规划dp 没掌握
struct nod{
int x,y,z;
}da[1000];
vector<int> g[1000];
int dp[1000];//抄博友程序 dp[t] 表示从时间点t开始的最少工作时间
int main()
{
int T;
cin>>T;
while(T--)
{
int n;
cin>>n;
memset(da,0,sizeof(da));
for(int i=0;i<1000;i++)
{
g[i].clear();
}
memset(dp,0x3f,sizeof(dp));
int l=1000,r=0;//抄博友程序
for(int i=0;i<n;i++)
{
cin>>da[i].x>>da[i].y>>da[i].z;
l=min(l,da[i].y);
r=max(r,da[i].z);
}
for(int i=l;i<r;i++)//题意 抄博友程序
{
for(int j=0;j<n;j++)
{
if(da[j].y<=i&& (i+da[j].x)<=da[j].z)
{
g[i].push_back(j);
}
}
}
dp[r]=0;//抄博友程序
for(int i=r-1;i>=l;i--)
{
if(g[i].empty()==1)
{
dp[i]=dp[i+1];
}else
{
for(int j=0;j<g[i].size();j++)
{
dp[i]=min(dp[i],dp[i+da[g[i][j]].x]+da[g[i][j]].x);//抄博友程序
}
}
}
cout<<dp[l]<<endl;
}
return 0;
}