#include<bits/stdc++.h>usingnamespacestd;#define ls now<<1
#define rs now<<1|1
#define endl "\n"
#define lowbit(x) ((x)&(-x))
#define int long long
constintN=4e5+7,mod=1e9+7;intn,m,h,dist1[N],dist2[N],inf=1e18;boolvis[N],p[N];vector<pair<int,int>>edge[N];voiddijkstra(ints,intdist[]){for(inti=1;i<=n*2;i++)dist[i]=inf;for(inti=1;i<=n*2;i++)vis[i]=0;dist[s]=0;set<pair<int,int>>q;q.insert({0,s});if(p[s]){dist[n+s]=0;q.insert({0,n+s});}while(!q.empty()){intu=q.begin()->second;q.erase(q.begin());if(vis[u])continue;vis[u]=1;intt=(u>n?u-n:u);for(auto[v,w]:edge[t]){if(u>n){if(dist[v+n]>dist[u]+w/2){dist[v+n]=dist[u]+w/2;if(!vis[v+n])q.insert({dist[v+n],v+n});}}else{if(p[v]){if(dist[v+n]>dist[u]+w){dist[v+n]=dist[u]+w;if(!vis[v+n])q.insert({dist[v+n],v+n});}}else{if(dist[v]>dist[u]+w){dist[v]=dist[u]+w;if(!vis[v])q.insert({dist[v],v});}}}}}}voidsolve(){cin>>n>>m>>h;for(inti=1;i<=n;i++)p[i]=0,edge[i].clear();for(inti=1;i<=h;i++){intx;cin>>x;p[x]=1;}for(inti=1;i<=m;i++){intu,v,w;cin>>u>>v>>w;edge[u].push_back({v,w});edge[v].push_back({u,w});}intans=inf;dijkstra(1,dist1);dijkstra(n,dist2);for(inti=1;i<=n;i++){ans=min(ans,max(min(dist1[i],dist1[i+n]),min(dist2[i],dist2[i+n])));}if(ans==inf)cout<<"-1\n";elsecout<<ans<<endl;}signedmain(){ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);intt;cin>>t;while(t--)solve();return0;}
#include<bits/stdc++.h>usingnamespacestd;#define ls now<<1
#define rs now<<1|1
#define endl "\n"
#define lowbit(x) ((x)&(-x))
#define int long long
constintN=1e6+7,mod=1e9+7;intn,q,x;inta[N],s[N];intl,r;random_devicernd;voidsolve(){cin>>n>>q;for(inti=1;i<=n;i++){cin>>x;s[i]=s[i-1]^a[x];}while(q--){cin>>l>>r;if((r-l+1)&1)cout<<"NO\n";elseif(s[r]==s[l-1])cout<<"YES\n";elsecout<<"NO\n";}}signedmain(){ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);for(inti=1;i<=1e6;i++){a[i]=rnd();}intt=1;cin>>t;while(t--)solve();return0;}