#include<stdio.h>
#include<string.h>
#include <iostream>
#include <queue>
using namespace std;
#define MAXN 205
#define MAXE 300005
#define INF 10000000
int heada[MAXN], headb[MAXN];
int dp[MAXN];
int cnta, cntb;
struct Edge{
int node;
int next;
};
struct Edge edgea[MAXE], edgeb[MAXE];
int rem[MAXE], cnt;
queue<int> que;
void adda(int a, int b)
{
edgea[cnta].node = b; edgea[cnta].next = heada[a]; heada[a] = cnta ++;
}
void addb(int a, int b)
{
edgeb[cntb].node = b; edgeb[cntb].next = headb[a]; headb[a] = cntb ++;
}
void spafa(int root, int fa)
{
dp[root] = 0;
while(!que.empty())que.pop();
que.push(root);
while(!que.empty())
{
int now = que.front();
que.pop();
for(int i = heada[now]; ~i; i = edgea[i].next)
{
if(edgea[i].node != fa)
{
if(dp[edgea[i].node] > dp[now] + 1)
{
que.push(edgea[i].node);
dp[edgea[i].node] = dp[now] + 1;
}
}
}
}
return ;
}
void spafb(int root, int fa)
{
dp[root] = 0;
while(!que.empty())que.pop();
que.push(root);
while(!que.empty())
{
int now = que.front();
que.pop();
for(int i = headb[now]; ~i; i = edgeb[i].next)
{
if(edgeb[i].node != fa)
{
if(dp[edgeb[i].node] > dp[now] + 1)
{
que.push(edgeb[i].node);
dp[edgeb[i].node] = dp[now] + 1;
}
}
}
}
return ;
}
int main()
{
int T, n, t, D1, D2, A, B;
for(scanf("%d", &T); T--;)
{
char ch;
scanf("%d%d", &n, &t);
memset(heada, -1, sizeof(heada));
memset(headb, -1, sizeof(headb));
cnta = cntb = 0;
while(t--)
{
cnt = 0;
scanf("%c", &ch);
scanf("%d%c", &A, &ch);
rem[++cnt] = A;
while(ch != ' ')
{
scanf("%d%c", &A, &ch);
rem[++cnt] = A;
}
int k;
scanf("%d", &k);
if(k)
{
for(int i = 2; i <= cnt; ++i)
{
adda(rem[i - 1], rem[i]);
addb(rem[i - 1], rem[i]);
}
}
else
{
for(int i = 2; i <= cnt; ++i)
addb(rem[i - 1], rem[i]);
}
}
scanf("%d%d", &D1, &D2);
scanf("%d%d", &A, &B);
for(int i = 1; i <= n; ++i)
dp[i] = INF;
spafa(A, -1);
int a = dp[B];
for(int i = 1; i <= n; ++i)
dp[i] = INF;
spafb(A, -1);
int b;
b = dp[B];
if((a == INF) && (b == INF))
printf("-1\n");
else
{
int ans = INF;
if(a != INF)
{
if(ans > a * D2)
ans = a * D2;
}
if(b != INF)
{
if(ans > b * D1)
ans = b * D1;
}
printf("%d\n", ans);
}
}
return 0;
}