#include<stdio.h>#include<string.h>
struct node
{ int a
,b
,value
;}p
[
2005
];int min
(int a
,int b
){ return a
<b
?a
:b
;}int main(){ int c
,i
,j
,k
,n
,m
,d
; int dp
[
2005
]; scanf
(
"%d"
,&c
); for(i
=
1
;i
<=c
;i
++) { scanf
(
"%d%d"
,&n
,&m
); for(j
=
1
;j
<=n
;j
++) { scanf
(
"%d%d%d"
,&p
[j
].a
,&p
[j
].b
,&p
[j
].value
); } for(j
=
1
;j
<=n
;j
++) dp
[j
]=-
1
; dp
[
1
]=p
[
1
].value
; for(j
=
2
;j
<=n
;j
++) { for(k
=
1
;k
<j
;k
++) { if(dp
[k
]!=-
1
) { if(p
[j
].a
<=p
[k
].b
) { if(dp
[j
]==-
1
) dp
[j
]=dp
[k
]+p
[j
].value
; else dp
[j
]=min
(dp
[j
],dp
[k
]+p
[j
].value
); } } } } for(j
=
1
;j
<=m
;j
++) { scanf
(
"%d"
,&d
); printf
(
"%d\n"
,dp
[d
]); } } return
0
;}