#include <cstdio>
#include <algorithm>
#define st first
#define nd second
#define VAL first
#define SN second.first
#define FN second.second
using namespace std;
int n,m,q,ans[300010][2];
pair<int,pair<int,int> > e[300010];
pair<int,int> qry[300010];
int now,cir,two,deg[300010],root[300010];
short isCir[300010];
int findroot(int nod)
{
    if(root[nod] != nod) root[nod] = findroot(root[nod]);
    return root[nod];
}
void adde(int id)
{
    int a,b;
    
    if(deg[e[id].SN] == 0) now++;
    else if(deg[e[id].SN] == 1) two++;
    else if(deg[e[id].SN] == 2) two--;
    if(deg[e[id].FN] == 0) now++;
    else if(deg[e[id].FN] == 1) two++;
    else if(deg[e[id].FN] == 2) two--;
    deg[e[id].SN]++; deg[e[id].FN]++;
    
    a = findroot(e[id].SN); b = findroot(e[id].FN);
    if(a != b)
    {
        root[b] = a;
        if(deg[e[id].SN]>2 || deg[e[id].FN]>2 || isCir[a]==-1 || isCir[b]==-1)
        {
            if(isCir[a] == 1) cir--; isCir[a] = -1;
            if(isCir[b] == 1) cir--; isCir[b] = -1;
        }
    }
    else if(a == b)
    {
        if(deg[e[id].SN]==2 && deg[e[id].FN]==2 && isCir[a]==0)
        {
            cir++;
            isCir[a] = 1;
        }
        else if(deg[e[id].SN]>2 || deg[e[id].FN]>2)
        {
            if(isCir[a]==1) cir--;
            isCir[a] = -1;
        }
    }
}
int main()
{
    int i,j;
    while(scanf("%d%d",&n,&m)>0)
    {
        now = two = cir = 0;
        for(i=1;i<=n;i++)
        {
            deg[i] = 0;
            root[i] = i; isCir[i] = 0;
        }
        
        for(i=1;i<=m;i++) scanf("%d%d%d",&e[i].SN,&e[i].FN,&e[i].VAL);
        sort(e+1,e+1+m);
        
        scanf("%d",&q);
        for(i=1;i<=q;i++)
        {
            scanf("%d",&qry[i].st);
            qry[i].nd = i;
        }
        sort(qry+1,qry+1+q);
        
        for(i=q,j=m;i;i--)
        {
            for(;j && e[j].VAL>=qry[i].st;j--) adde(j);
            ans[qry[i].nd][0] = now-two+cir;
            ans[qry[i].nd][1] = m-j-two+cir;
        }
        for(i=1;i<=q;i++) printf("%d %d\n",ans[i][0],ans[i][1]);
    }
    return 0;
}