M = 10 ** 9 + 7
def fg():
    return int(input())
def fgh():
    return [int(xx) for xx in input().split()]
for __ in range(int(input())):
    n, m, l = fgh()
    a = [[-2] * n for i in range(n)]
    z = []
    for _ in range(m):
        u, v, w = fgh()
        u -= 1
        v -= 1
        a[u][v] = w
        a[v][u] = w
    d = fgh()
    if d[0]:
        print(0)
        continue
    ans = 1
    v = []
    for i in range(n):
        v.append((d[i], i))
    v.sort()
    for i in range(1, n):
        x = v[i][1]
        ans1 = ans
        ans2 = ans
        fl = 0
        fl1 = 0
        for j in range(i):
            y = v[j][1]
            if a[x][y] + 2:
                if a[x][y] + 1:
                    if d[x] == d[y] + a[x][y]:
                        fl = 1
                    elif d[x] > d[y] + a[x][y]:
                        fl1 = 1
                else:
                    if d[x] - d[y] > l:
                        fl1 = 0
                    ans1 *= min(l, max(0, l - (d[x] - d[y]) + 1))
                    ans1 %= M
                    ans2 *= min(l, max(0, l - (d[x] - d[y])))
                    ans2 %= M
        if fl:
            ans = ans1
        else:
            ans = (ans1 - ans2) % M
        if fl1:
            ans = 0
    print(ans)