#include <bits/stdc++.h>
#define pii pair<int, int>
#define fi first
#define se second
#define ll long long
using namespace std;
const ll INF = 1e18+8;
vector<array<ll, 3>> edges[100'002];
bool shop[100'002];
ll e;
ll dfs(ll u, ll block, ll p=0, ll dist=0){
if(u==e)
return -1;
ll tta;
if(shop[u])
tta=dist;
else tta=INF;
for(auto x : edges[u]){
if(x[0]!=p && x[2]!=block){
tta=min(tta, dfs(x[0], block, u, dist+x[1]));
}
}
return tta;
}
int main()
{
ll n, s, q; cin>>n>>s>>q>>e;
for(ll i=1; i<n; i++){
ll a, b, w; cin>>a>>b>>w;
edges[a].push_back({b, w, i});
edges[b].push_back({a, w, i});
}
for(ll i=0; i<s; i++){
ll s; cin>>s;
shop[s]=1;
}
for(ll i=0; i<q; i++){
ll u, block; cin>>block>>u;
ll atb = dfs(u, block);
if(atb==-1)
cout<<"escaped"<<endl;
else if(atb==INF)
cout<<"oo"<<endl;
else
cout<<atb<<endl;
}
return 0;
}