#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;

const int MN = 1005;
int n, k, bt[MN], dep[MN][MN], dp[MN];

int rec(int cur)
{
	int& ret = dp[cur];
	if(ret) return ret;
	ret = bt[cur];
	for(int prev = 1; prev <= n; ++prev){
		if(dep[prev][cur]){
			ret = max(ret, rec(prev) + bt[cur]);
		}
	}
	return ret;
}

int main()
{
	int t;
	cin >> t;
	while(t--){
		cin >> n >> k;
		for(int i = 1; i <= n; ++i){
			dp[i] = 0;
			for(int j = 1; j <= n; ++j){
				dep[i][j] = 0;
			}
		}

		for(int i = 1; i <= n; ++i){
			cin >> bt[i];
		}

		for(int i = 0; i < k; ++i){
			int a, b;
			cin >> a >> b;
			dep[a][b] = 1;
		}

		int target;
		cin >> target;
		cout << rec(target) << '\n';
	}
}