#include<cstdio>
#include<cstring>
#include<iostream>
#include<cstdlib>
#include<climits>
#include<cmath>
#include<cctype>
#include<set>
#include<queue>
#include<stack>
#include<algorithm>
using namespace std;
long long n,k,t,ans;
const long long maxn=3010;
char ANS[maxn];
long long a[maxn][5];
long long score[maxn];
bool dadui[maxn];
long long biaozhundaan[maxn];
long long theanswer(long long i)
{
long long cnt=0,ans;
for(long long j=1;j<=4;j++)
{
if(a[i][j]<4)
continue;
bool flag=true;
for(long long jj=1;jj<=4;jj++)
if(a[i][jj]-a[i][j]>=4)
flag=false;
if(flag==true)
{
cnt++;
ans=j;
}
}
if(cnt==1)
return ans;
else
return -1;
}
void zhuanhuan(void)
{
for(long long i=0;i<n;i++)
{
biaozhundaan[i+1]=ANS[i]-'A'+1;
}
}
void check(void)
{
long long temp;
for(long long i=1;i<=n;i++)
{
temp=theanswer(i);
//printf("The answer of line %lld is %lld\n",i,temp);
if(temp==biaozhundaan[i])
dadui[i]=1;
}
}
int main(void)
{
long long u,v,w;
cin>>t;
while(t--)
{
char tempinput[10];
cin>>n;
for(long long i=1;i<=n;i++)
{
cin>>tempinput;
for(long long j=1;j<=4;j++)
a[i][j]=tempinput[j-1]-'0';
}
scanf("%s",ANS);
cin>>k;
while(k--)
{
cin>>u>>v>>w;
for(int i=u;i<=v;i++)
score[i]=w;
}
memset(dadui,0,sizeof(dadui));
zhuanhuan();
check();
ans=0;
for(long long i=1;i<=n;i++)
ans+=score[i]*dadui[i];
cout<<ans<<endl;
}
return 0;
}
#include<cstring>
#include<iostream>
#include<cstdlib>
#include<climits>
#include<cmath>
#include<cctype>
#include<set>
#include<queue>
#include<stack>
#include<algorithm>
using namespace std;
long long n,k,t,ans;
const long long maxn=3010;
char ANS[maxn];
long long a[maxn][5];
long long score[maxn];
bool dadui[maxn];
long long biaozhundaan[maxn];
long long theanswer(long long i)
{
long long cnt=0,ans;
for(long long j=1;j<=4;j++)
{
if(a[i][j]<4)
continue;
bool flag=true;
for(long long jj=1;jj<=4;jj++)
if(a[i][jj]-a[i][j]>=4)
flag=false;
if(flag==true)
{
cnt++;
ans=j;
}
}
if(cnt==1)
return ans;
else
return -1;
}
void zhuanhuan(void)
{
for(long long i=0;i<n;i++)
{
biaozhundaan[i+1]=ANS[i]-'A'+1;
}
}
void check(void)
{
long long temp;
for(long long i=1;i<=n;i++)
{
temp=theanswer(i);
//printf("The answer of line %lld is %lld\n",i,temp);
if(temp==biaozhundaan[i])
dadui[i]=1;
}
}
int main(void)
{
long long u,v,w;
cin>>t;
while(t--)
{
char tempinput[10];
cin>>n;
for(long long i=1;i<=n;i++)
{
cin>>tempinput;
for(long long j=1;j<=4;j++)
a[i][j]=tempinput[j-1]-'0';
}
scanf("%s",ANS);
cin>>k;
while(k--)
{
cin>>u>>v>>w;
for(int i=u;i<=v;i++)
score[i]=w;
}
memset(dadui,0,sizeof(dadui));
zhuanhuan();
check();
ans=0;
for(long long i=1;i<=n;i++)
ans+=score[i]*dadui[i];
cout<<ans<<endl;
}
return 0;
}