#include <bits/stdc++.h>
using namespace std;
int n, m;
vector<pair<int, int> > E[55];
int s, T[55];
int D[55][55];
int dis[55][55];
vector<int> leaf;
int Do(int A, int x) {
  int low = 1, high = 1e9, res = -1;
  while (low <= high) {
    int mid = (low + high) >> 1;
    int cnt = 0;
    for (int e : leaf)
      if (e != x) {
        int f = A;
        for (int i = 0; i < A; i++)
          if (D[i][e] + dis[x][e] > mid) {
            f = i;
            break;
          }
        cnt += A - f;
      }
    if (cnt >= A)
      low = mid + 1;
    else
      res = mid, high = mid - 1;
  }
  return res;
}
int S[55];
void solve() {
  scanf("%d", &n);
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= n; j++) dis[i][j] = (i == j ? 0 : 1e9);
  for (int i = 0; i < n - 1; i++) {
    int x, y, z;
    scanf("%d%d%d", &x, &y, &z);
    E[x].push_back(pair<int, int>(z, y));
    E[y].push_back(pair<int, int>(z, x));
    dis[x][y] = dis[y][x] = z;
  }
  for (int i = 1; i <= n; i++)
    if (((int)(E[i]).size()) == 1) leaf.push_back(i);
  for (int k = 1; k <= n; k++)
    for (int i = 1; i <= n; i++)
      for (int j = 1; j <= n; j++)
        dis[i][j] = min(dis[i][j], dis[i][k] + dis[k][j]);
  scanf("%d%d", &s, &m);
  for (int i = 1; i < m; i++) {
    for (int j = 1; j <= n; j++) {
      D[i][j] = Do(i, j);
    }
  }
  int low = 1, high = 1e9, res = -1;
  for (pair<int, int> e : E[s]) {
    int u = e.second;
    for (int i = 1; i <= n; i++) {
      if (dis[s][u] + dis[u][i] == dis[s][i]) {
        S[i] = u;
      }
    }
  }
  for (int i = 1; i <= m; i++) {
    int x;
    scanf("%d", &x);
    T[S[x]]++;
  }
  while (low <= high) {
    int mid = (low + high) >> 1;
    int cnt[55] = {};
    for (int e : leaf) {
      int f = m;
      for (int i = 0; i < m; i++)
        if (D[i][e] + dis[s][e] > mid) {
          f = i;
          break;
        }
      cnt[S[e]] += m - f;
    }
    int ok = 1;
    for (pair<int, int> e : E[s])
      if (T[e.second] > cnt[e.second]) ok = 0;
    if (ok)
      low = mid + 1;
    else
      res = mid, high = mid - 1;
  }
  printf("%d\n", res);
}
int main() {
  int Tc = 1;
  for (int tc = 1; tc <= Tc; tc++) {
    solve();
  }
  return 0;
}
