// Đạt đz s1 tg
 
#include <bits/stdc++.h>
 
#define f first
#define s second
#define mod 1000000007
#define PB push_back
#define PF push_front
#define inf 10000007
#define round(m,n) setprecision((int)m) << fixed << double(n)
#define ll long long
#define int long long
#define bit(x, i) ((x >> i) & 1)
#define pii pair<int, int>
#define TASK "snow"
 
using namespace std;
 
void ADD(int &x, int y){
    x += y;
    if (x >= mod) x -= mod;
    if (x < 0) x += mod;
}
 
int n, m, k, t;
vector<pii> adj[105];
int a[105];
 
struct gay{
    int u, v, w;
} b[100005];
 
int comp(gay a, gay b){
    return a.w < b.w;
}
 
int r[105];
int get(int x){
    if(r[x] == x) return x;
    return r[x] = get(r[x]);
}
void join(int x, int y){
    int u = get(x), v = get(y);
    if(u == v) return;
    r[v] = u;
}
int check(int x, int y){
    int u = get(x), v = get(y);
    return (u == v);
}
 
void sub1(){
    sort(b + 1, b + m + 1, comp);
    for(int i = 1; i <= n; i++)
        r[i] = i;
 
    int cnt = 0;
    for(int i = 1; i <= m; i++){
        auto [u, v, w] = b[i];
        if(!check(u, v)){
            join(u, v);
            cnt += w;
        }
    }
 
    cout << cnt;
}
 
int w[105][105];
void sub2(){
    for(int i = 1; i <= n; i++)
    for(int j = 1; j <= n; j++){
        if(i == j) continue;
        w[i][j] = 1e15;
    }
    for(int i = 1; i <= m; i++){
        auto [u, v, W] = b[i];
        w[u][v] = min(W, w[u][v]);
        w[v][u] = w[u][v];
    }
    for(int t = 1; t <= n; t++)
    for(int i = 1; i <= n; i++)
    for(int j = 1; j <= n; j++)
    w[i][j] = min(w[i][j], w[i][t] + w[t][j]);
 
    cout << w[a[1]][a[2]];
}
 
void sub3(){
    for(int i = 1; i <= n; i++)
    for(int j = 1; j <= n; j++){
        if(i == j) continue;
        w[i][j] = 1e15;
    }
    for(int i = 1; i <= m; i++){
        auto [u, v, W] = b[i];
        w[u][v] = min(W, w[u][v]);
        w[v][u] = w[u][v];
    }
    for(int t = 1; t <= n; t++)
    for(int i = 1; i <= n; i++)
    for(int j = 1; j <= n; j++)
    w[i][j] = min(w[i][j], w[i][t] + w[t][j]);
 
    int minn = 1e15;
    for(int i = 1; i <= k; i++)
    for(int j = 1; j <= k; j++)
    for(int z = 1; z <= k; z++)
    if(a[i] != a[j] && a[j] != a[z] && a[i] != a[z]){
        for(int x = 1; x <= n; x++)
        for(int y = 1; y <= n; y++)
        minn = min(minn, w[a[i]][x] + w[x][a[j]] + w[a[j]][y] + w[y][a[z]]);
    }
 
    for(int x = 1; x <= n; x++){
        for(int i = 1; i <= k; i++)
        for(int j = 1; j <= k; j++)
        for(int z = 1; z <= k; z++)
        if(a[i] != a[j] && a[j] != a[z] && a[i] != a[z]){
            minn = min(minn, w[a[i]][x] + w[a[j]][x] + w[a[z]][x]);
        }
    }
 
    cout << minn;
}
 
int f[105], pick[105];
 
int TryMST(int mask){
    for(int i = 1; i <= n; i++)
        r[i] = i;
 
    int cnt = 0;
    for(int i = 1; i <= m; i++){
        auto [u, v, w] = b[i];
        if(pick[u] && !f[u]) continue;
        if(pick[v] && !f[v]) continue;
        if(!check(u, v)){
            join(u, v);
            cnt += w;
        }
    }
 
    return cnt;
}
 
void sub5(){
    sort(b + 1, b + m + 1, comp);
    int minn = 1e15;
    for(int mask = 0; mask < (1 << k); mask++){
        memset(f, 0, sizeof(f));
        for(int i = 1; i <= k; i++)
        f[a[i]] = bit(mask, i - 1);
        minn = min(minn, TryMST(mask));
    }
    cout << minn;
}
 
struct gayass{
    int cost, u, mask;
};
 
struct cmp{
    bool operator()(const gayass &a, gayass &b){
            return a.cost > b.cost;
    }
};
 
int conv[2025];
int W[105][2025];
 
void sub4(){
    for(int i = 1; i <= k; i++) conv[a[i]] = i;
 
    for(int i = 1; i <= n; i++)
    for(int j = 0; j <= (1 << k); j++)
        W[i][j] = 1e15;
 
    priority_queue<gayass, vector<gayass>, cmp> q;
    for(int i = 1; i <= n; i++){
        if(pick[i]){
            q.push({0, i, (1 << conv[i] - 1)});
            W[i][(1 << conv[i] - 1)] = 0;
        }
        else{
            q.push({0, i, 0});
            W[i][0] = 0;
        }
    }
 
    while(!q.empty()){
        gayass u = q.top();
//        cout << u.u << " " << u.cost << " " << u.mask << '\n';
        q.pop();
        for(pii v : adj[u.u]){
            if(W[v.s][u.mask] > v.f + u.cost){
                W[v.s][u.mask] = v.f + u.cost;
                q.push({W[v.s][u.mask], v.s, u.mask});
            }
            if(conv[v.s]){
                if(bit(u.mask, conv[v.s] - 1)) continue;
                int newmask = u.mask + (1 << conv[v.s] - 1);
                if(W[v.s][newmask] > v.f + u.cost){
                    W[v.s][newmask] = v.f + u.cost;
                    q.push({W[v.s][newmask], v.s, newmask});
                }
            }
        }
    }
 
    int ans = 1e15;
    for(int i = 1; i <= n; i++)
//        cout << i << " " << W[i][(1 << k) - 1] << '\n';
    ans = min(ans, W[i][(1 << k) - 1]);
 
    cout << ans;
}
 
signed main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0); cout.tie(0);
 
    if(fopen(TASK".INP", "r")){
        freopen(TASK".INP", "r", stdin);
        freopen(TASK".OUT", "w", stdout);
    }
 
    cin >> n >> k >> m >> t;
    for(int i = 1; i <= k; i++){
        cin >> a[i];
        pick[a[i]]++;
    }
    for(int i = 1; i <= m; i++){
        int u, v, w;
        cin >> u >> v >> w;
        adj[u].PB({w, v});
        adj[v].PB({w, u});
        b[i] = {u, v, w};
    }
 
    if(t == 1 && k == n) sub1();
    else if(t == 1 && k == 2) sub2();
    else if(t == 1 && k == 3) sub3();
    else if(t == 2) sub5();
    else sub4();
}
 
				Ly8gxJDhuqF0IMSReiBzMSB0ZwoKI2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CgojZGVmaW5lIGYgZmlyc3QKI2RlZmluZSBzIHNlY29uZAojZGVmaW5lIG1vZCAxMDAwMDAwMDA3CiNkZWZpbmUgUEIgcHVzaF9iYWNrCiNkZWZpbmUgUEYgcHVzaF9mcm9udAojZGVmaW5lIGluZiAxMDAwMDAwNwojZGVmaW5lIHJvdW5kKG0sbikgc2V0cHJlY2lzaW9uKChpbnQpbSkgPDwgZml4ZWQgPDwgZG91YmxlKG4pCiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgaW50IGxvbmcgbG9uZwojZGVmaW5lIGJpdCh4LCBpKSAoKHggPj4gaSkgJiAxKQojZGVmaW5lIHBpaSBwYWlyPGludCwgaW50PgojZGVmaW5lIFRBU0sgInNub3ciCgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdm9pZCBBREQoaW50ICZ4LCBpbnQgeSl7CiAgICB4ICs9IHk7CiAgICBpZiAoeCA+PSBtb2QpIHggLT0gbW9kOwogICAgaWYgKHggPCAwKSB4ICs9IG1vZDsKfQoKaW50IG4sIG0sIGssIHQ7CnZlY3RvcjxwaWk+IGFkalsxMDVdOwppbnQgYVsxMDVdOwoKc3RydWN0IGdheXsKICAgIGludCB1LCB2LCB3Owp9IGJbMTAwMDA1XTsKCmludCBjb21wKGdheSBhLCBnYXkgYil7CiAgICByZXR1cm4gYS53IDwgYi53Owp9CgppbnQgclsxMDVdOwppbnQgZ2V0KGludCB4KXsKICAgIGlmKHJbeF0gPT0geCkgcmV0dXJuIHg7CiAgICByZXR1cm4gclt4XSA9IGdldChyW3hdKTsKfQp2b2lkIGpvaW4oaW50IHgsIGludCB5KXsKICAgIGludCB1ID0gZ2V0KHgpLCB2ID0gZ2V0KHkpOwogICAgaWYodSA9PSB2KSByZXR1cm47CiAgICByW3ZdID0gdTsKfQppbnQgY2hlY2soaW50IHgsIGludCB5KXsKICAgIGludCB1ID0gZ2V0KHgpLCB2ID0gZ2V0KHkpOwogICAgcmV0dXJuICh1ID09IHYpOwp9Cgp2b2lkIHN1YjEoKXsKICAgIHNvcnQoYiArIDEsIGIgKyBtICsgMSwgY29tcCk7CiAgICBmb3IoaW50IGkgPSAxOyBpIDw9IG47IGkrKykKICAgICAgICByW2ldID0gaTsKCiAgICBpbnQgY250ID0gMDsKICAgIGZvcihpbnQgaSA9IDE7IGkgPD0gbTsgaSsrKXsKICAgICAgICBhdXRvIFt1LCB2LCB3XSA9IGJbaV07CiAgICAgICAgaWYoIWNoZWNrKHUsIHYpKXsKICAgICAgICAgICAgam9pbih1LCB2KTsKICAgICAgICAgICAgY250ICs9IHc7CiAgICAgICAgfQogICAgfQoKICAgIGNvdXQgPDwgY250Owp9CgppbnQgd1sxMDVdWzEwNV07CnZvaWQgc3ViMigpewogICAgZm9yKGludCBpID0gMTsgaSA8PSBuOyBpKyspCiAgICBmb3IoaW50IGogPSAxOyBqIDw9IG47IGorKyl7CiAgICAgICAgaWYoaSA9PSBqKSBjb250aW51ZTsKICAgICAgICB3W2ldW2pdID0gMWUxNTsKICAgIH0KICAgIGZvcihpbnQgaSA9IDE7IGkgPD0gbTsgaSsrKXsKICAgICAgICBhdXRvIFt1LCB2LCBXXSA9IGJbaV07CiAgICAgICAgd1t1XVt2XSA9IG1pbihXLCB3W3VdW3ZdKTsKICAgICAgICB3W3ZdW3VdID0gd1t1XVt2XTsKICAgIH0KICAgIGZvcihpbnQgdCA9IDE7IHQgPD0gbjsgdCsrKQogICAgZm9yKGludCBpID0gMTsgaSA8PSBuOyBpKyspCiAgICBmb3IoaW50IGogPSAxOyBqIDw9IG47IGorKykKICAgIHdbaV1bal0gPSBtaW4od1tpXVtqXSwgd1tpXVt0XSArIHdbdF1bal0pOwoKICAgIGNvdXQgPDwgd1thWzFdXVthWzJdXTsKfQoKdm9pZCBzdWIzKCl7CiAgICBmb3IoaW50IGkgPSAxOyBpIDw9IG47IGkrKykKICAgIGZvcihpbnQgaiA9IDE7IGogPD0gbjsgaisrKXsKICAgICAgICBpZihpID09IGopIGNvbnRpbnVlOwogICAgICAgIHdbaV1bal0gPSAxZTE1OwogICAgfQogICAgZm9yKGludCBpID0gMTsgaSA8PSBtOyBpKyspewogICAgICAgIGF1dG8gW3UsIHYsIFddID0gYltpXTsKICAgICAgICB3W3VdW3ZdID0gbWluKFcsIHdbdV1bdl0pOwogICAgICAgIHdbdl1bdV0gPSB3W3VdW3ZdOwogICAgfQogICAgZm9yKGludCB0ID0gMTsgdCA8PSBuOyB0KyspCiAgICBmb3IoaW50IGkgPSAxOyBpIDw9IG47IGkrKykKICAgIGZvcihpbnQgaiA9IDE7IGogPD0gbjsgaisrKQogICAgd1tpXVtqXSA9IG1pbih3W2ldW2pdLCB3W2ldW3RdICsgd1t0XVtqXSk7CgogICAgaW50IG1pbm4gPSAxZTE1OwogICAgZm9yKGludCBpID0gMTsgaSA8PSBrOyBpKyspCiAgICBmb3IoaW50IGogPSAxOyBqIDw9IGs7IGorKykKICAgIGZvcihpbnQgeiA9IDE7IHogPD0gazsgeisrKQogICAgaWYoYVtpXSAhPSBhW2pdICYmIGFbal0gIT0gYVt6XSAmJiBhW2ldICE9IGFbel0pewogICAgICAgIGZvcihpbnQgeCA9IDE7IHggPD0gbjsgeCsrKQogICAgICAgIGZvcihpbnQgeSA9IDE7IHkgPD0gbjsgeSsrKQogICAgICAgIG1pbm4gPSBtaW4obWlubiwgd1thW2ldXVt4XSArIHdbeF1bYVtqXV0gKyB3W2Fbal1dW3ldICsgd1t5XVthW3pdXSk7CiAgICB9CgogICAgZm9yKGludCB4ID0gMTsgeCA8PSBuOyB4KyspewogICAgICAgIGZvcihpbnQgaSA9IDE7IGkgPD0gazsgaSsrKQogICAgICAgIGZvcihpbnQgaiA9IDE7IGogPD0gazsgaisrKQogICAgICAgIGZvcihpbnQgeiA9IDE7IHogPD0gazsgeisrKQogICAgICAgIGlmKGFbaV0gIT0gYVtqXSAmJiBhW2pdICE9IGFbel0gJiYgYVtpXSAhPSBhW3pdKXsKICAgICAgICAgICAgbWlubiA9IG1pbihtaW5uLCB3W2FbaV1dW3hdICsgd1thW2pdXVt4XSArIHdbYVt6XV1beF0pOwogICAgICAgIH0KICAgIH0KCiAgICBjb3V0IDw8IG1pbm47Cn0KCmludCBmWzEwNV0sIHBpY2tbMTA1XTsKCmludCBUcnlNU1QoaW50IG1hc2spewogICAgZm9yKGludCBpID0gMTsgaSA8PSBuOyBpKyspCiAgICAgICAgcltpXSA9IGk7CgogICAgaW50IGNudCA9IDA7CiAgICBmb3IoaW50IGkgPSAxOyBpIDw9IG07IGkrKyl7CiAgICAgICAgYXV0byBbdSwgdiwgd10gPSBiW2ldOwogICAgICAgIGlmKHBpY2tbdV0gJiYgIWZbdV0pIGNvbnRpbnVlOwogICAgICAgIGlmKHBpY2tbdl0gJiYgIWZbdl0pIGNvbnRpbnVlOwogICAgICAgIGlmKCFjaGVjayh1LCB2KSl7CiAgICAgICAgICAgIGpvaW4odSwgdik7CiAgICAgICAgICAgIGNudCArPSB3OwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gY250Owp9Cgp2b2lkIHN1YjUoKXsKICAgIHNvcnQoYiArIDEsIGIgKyBtICsgMSwgY29tcCk7CiAgICBpbnQgbWlubiA9IDFlMTU7CiAgICBmb3IoaW50IG1hc2sgPSAwOyBtYXNrIDwgKDEgPDwgayk7IG1hc2srKyl7CiAgICAgICAgbWVtc2V0KGYsIDAsIHNpemVvZihmKSk7CiAgICAgICAgZm9yKGludCBpID0gMTsgaSA8PSBrOyBpKyspCiAgICAgICAgZlthW2ldXSA9IGJpdChtYXNrLCBpIC0gMSk7CiAgICAgICAgbWlubiA9IG1pbihtaW5uLCBUcnlNU1QobWFzaykpOwogICAgfQogICAgY291dCA8PCBtaW5uOwp9CgpzdHJ1Y3QgZ2F5YXNzewogICAgaW50IGNvc3QsIHUsIG1hc2s7Cn07CgpzdHJ1Y3QgY21wewogICAgYm9vbCBvcGVyYXRvcigpKGNvbnN0IGdheWFzcyAmYSwgZ2F5YXNzICZiKXsKICAgICAgICAgICAgcmV0dXJuIGEuY29zdCA+IGIuY29zdDsKICAgIH0KfTsKCmludCBjb252WzIwMjVdOwppbnQgV1sxMDVdWzIwMjVdOwoKdm9pZCBzdWI0KCl7CiAgICBmb3IoaW50IGkgPSAxOyBpIDw9IGs7IGkrKykgY29udlthW2ldXSA9IGk7CgogICAgZm9yKGludCBpID0gMTsgaSA8PSBuOyBpKyspCiAgICBmb3IoaW50IGogPSAwOyBqIDw9ICgxIDw8IGspOyBqKyspCiAgICAgICAgV1tpXVtqXSA9IDFlMTU7CgogICAgcHJpb3JpdHlfcXVldWU8Z2F5YXNzLCB2ZWN0b3I8Z2F5YXNzPiwgY21wPiBxOwogICAgZm9yKGludCBpID0gMTsgaSA8PSBuOyBpKyspewogICAgICAgIGlmKHBpY2tbaV0pewogICAgICAgICAgICBxLnB1c2goezAsIGksICgxIDw8IGNvbnZbaV0gLSAxKX0pOwogICAgICAgICAgICBXW2ldWygxIDw8IGNvbnZbaV0gLSAxKV0gPSAwOwogICAgICAgIH0KICAgICAgICBlbHNlewogICAgICAgICAgICBxLnB1c2goezAsIGksIDB9KTsKICAgICAgICAgICAgV1tpXVswXSA9IDA7CiAgICAgICAgfQogICAgfQoKICAgIHdoaWxlKCFxLmVtcHR5KCkpewogICAgICAgIGdheWFzcyB1ID0gcS50b3AoKTsKLy8gICAgICAgIGNvdXQgPDwgdS51IDw8ICIgIiA8PCB1LmNvc3QgPDwgIiAiIDw8IHUubWFzayA8PCAnXG4nOwogICAgICAgIHEucG9wKCk7CiAgICAgICAgZm9yKHBpaSB2IDogYWRqW3UudV0pewogICAgICAgICAgICBpZihXW3Yuc11bdS5tYXNrXSA+IHYuZiArIHUuY29zdCl7CiAgICAgICAgICAgICAgICBXW3Yuc11bdS5tYXNrXSA9IHYuZiArIHUuY29zdDsKICAgICAgICAgICAgICAgIHEucHVzaCh7V1t2LnNdW3UubWFza10sIHYucywgdS5tYXNrfSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYoY29udlt2LnNdKXsKICAgICAgICAgICAgICAgIGlmKGJpdCh1Lm1hc2ssIGNvbnZbdi5zXSAtIDEpKSBjb250aW51ZTsKICAgICAgICAgICAgICAgIGludCBuZXdtYXNrID0gdS5tYXNrICsgKDEgPDwgY29udlt2LnNdIC0gMSk7CiAgICAgICAgICAgICAgICBpZihXW3Yuc11bbmV3bWFza10gPiB2LmYgKyB1LmNvc3QpewogICAgICAgICAgICAgICAgICAgIFdbdi5zXVtuZXdtYXNrXSA9IHYuZiArIHUuY29zdDsKICAgICAgICAgICAgICAgICAgICBxLnB1c2goe1dbdi5zXVtuZXdtYXNrXSwgdi5zLCBuZXdtYXNrfSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgaW50IGFucyA9IDFlMTU7CiAgICBmb3IoaW50IGkgPSAxOyBpIDw9IG47IGkrKykKLy8gICAgICAgIGNvdXQgPDwgaSA8PCAiICIgPDwgV1tpXVsoMSA8PCBrKSAtIDFdIDw8ICdcbic7CiAgICBhbnMgPSBtaW4oYW5zLCBXW2ldWygxIDw8IGspIC0gMV0pOwoKICAgIGNvdXQgPDwgYW5zOwp9CgpzaWduZWQgbWFpbigpewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsKICAgIGNpbi50aWUoMCk7IGNvdXQudGllKDApOwoKICAgIGlmKGZvcGVuKFRBU0siLklOUCIsICJyIikpewogICAgICAgIGZyZW9wZW4oVEFTSyIuSU5QIiwgInIiLCBzdGRpbik7CiAgICAgICAgZnJlb3BlbihUQVNLIi5PVVQiLCAidyIsIHN0ZG91dCk7CiAgICB9CgogICAgY2luID4+IG4gPj4gayA+PiBtID4+IHQ7CiAgICBmb3IoaW50IGkgPSAxOyBpIDw9IGs7IGkrKyl7CiAgICAgICAgY2luID4+IGFbaV07CiAgICAgICAgcGlja1thW2ldXSsrOwogICAgfQogICAgZm9yKGludCBpID0gMTsgaSA8PSBtOyBpKyspewogICAgICAgIGludCB1LCB2LCB3OwogICAgICAgIGNpbiA+PiB1ID4+IHYgPj4gdzsKICAgICAgICBhZGpbdV0uUEIoe3csIHZ9KTsKICAgICAgICBhZGpbdl0uUEIoe3csIHV9KTsKICAgICAgICBiW2ldID0ge3UsIHYsIHd9OwogICAgfQoKICAgIGlmKHQgPT0gMSAmJiBrID09IG4pIHN1YjEoKTsKICAgIGVsc2UgaWYodCA9PSAxICYmIGsgPT0gMikgc3ViMigpOwogICAgZWxzZSBpZih0ID09IDEgJiYgayA9PSAzKSBzdWIzKCk7CiAgICBlbHNlIGlmKHQgPT0gMikgc3ViNSgpOwogICAgZWxzZSBzdWI0KCk7Cn0K