#include <bits/stdc++.h>
#define ll long long
#define el cout << '\n'
#define ii pair<ll, ll>
#define fi first
#define se second
using namespace std;
const int maxn = 2e5;
const ll INF = 1e18;
struct Node
{
int top, source;
ll dist;
Node(int top = 0, int source = 0, ll dist = 0) :
top(top), source(source), dist(dist) {};
bool operator < (const Node &other) const
{
return dist > other.dist || (dist == other.dist && source > other.source);
}
};
int n, m, k;
vector<ii> adj[maxn + 10];
ii ans[maxn + 10], d[maxn + 10];
int p[maxn + 10];
priority_queue<Node> pq;
int main()
{
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
if (fopen("FPAIR.INP", "r"))
{
freopen("FPAIR.INP", "r", stdin);
freopen("FPAIR.OUT", "w", stdout);
}
cin >> n >> m >> k;
for (int i = 1; i <= n + k; i++)
{
d[i] = {INF, INF};
ans[i] = {INF, INF};
}
for (int i = 1; i <= k; i++)
{
cin >> p[i];
adj[p[i]].push_back({n + i, 0});
adj[n + i].push_back({p[i], 0});
pq.push(Node(n + i, n + i, 0));
d[n + i] = {0, n + i};
}
// Initialize sources and handle same location
for (int i = 1; i <= m; i++)
{
int x, y;
ll w;
cin >> x >> y >> w;
adj[x].push_back({y, w});
adj[y].push_back({x, w});
}
while (pq.size())
{
Node t = pq.top();
pq.pop();
int top = t.top;
ll dist = t.dist;
int source = t.source;
if (ii(dist, source) != d[top])
continue;
for (ii pr : adj[top])
{
int next_top = pr.fi;
ll w = pr.se;
ll new_dist = dist + w;
if (d[next_top].se != INF && d[next_top].se != source)
{
ll total_dist = new_dist + d[next_top].fi;
int other_source = d[next_top].se;
ans[source] = min(ans[source], {total_dist, other_source});
ans[other_source] = min(ans[other_source], {total_dist, source});
}
if (d[next_top] > ii(new_dist, source))
{
d[next_top] = ii(new_dist, source);
pq.push(Node(next_top, source, new_dist));
}
}
}
for (int i = 1; i <= k; i++)
cout << ans[i + n].se - n << ' ';
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CgojZGVmaW5lIGxsIGxvbmcgbG9uZyAKI2RlZmluZSBlbCBjb3V0IDw8ICdcbicKI2RlZmluZSBpaSBwYWlyPGxsLCBsbD4KI2RlZmluZSBmaSBmaXJzdAojZGVmaW5lIHNlIHNlY29uZAoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNvbnN0IGludCBtYXhuID0gMmU1Owpjb25zdCBsbCBJTkYgPSAxZTE4OwoKc3RydWN0IE5vZGUKewogICAgaW50IHRvcCwgc291cmNlOwogICAgbGwgZGlzdDsKCiAgICBOb2RlKGludCB0b3AgPSAwLCBpbnQgc291cmNlID0gMCwgbGwgZGlzdCA9IDApIDoKICAgICAgICB0b3AodG9wKSwgc291cmNlKHNvdXJjZSksIGRpc3QoZGlzdCkge307CiAgICBib29sIG9wZXJhdG9yIDwgKGNvbnN0IE5vZGUgJm90aGVyKSBjb25zdAogICAgewogICAgICAgIHJldHVybiBkaXN0ID4gb3RoZXIuZGlzdCB8fCAoZGlzdCA9PSBvdGhlci5kaXN0ICYmIHNvdXJjZSA+IG90aGVyLnNvdXJjZSk7CiAgICB9Cn07CgppbnQgbiwgbSwgazsKdmVjdG9yPGlpPiBhZGpbbWF4biArIDEwXTsKaWkgYW5zW21heG4gKyAxMF0sIGRbbWF4biArIDEwXTsKaW50IHBbbWF4biArIDEwXTsKcHJpb3JpdHlfcXVldWU8Tm9kZT4gcHE7CgppbnQgbWFpbigpCnsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7IGNpbi50aWUoMCk7IGNvdXQudGllKDApOwogICAgaWYgKGZvcGVuKCJGUEFJUi5JTlAiLCAiciIpKQogICAgewogICAgICAgIGZyZW9wZW4oIkZQQUlSLklOUCIsICJyIiwgc3RkaW4pOwogICAgICAgIGZyZW9wZW4oIkZQQUlSLk9VVCIsICJ3Iiwgc3Rkb3V0KTsKICAgIH0KCiAgICBjaW4gPj4gbiA+PiBtID4+IGs7CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuICsgazsgaSsrKQogICAgewogICAgICAgIGRbaV0gPSB7SU5GLCBJTkZ9OwogICAgICAgIGFuc1tpXSA9IHtJTkYsIElORn07CiAgICB9CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBrOyBpKyspCiAgICB7CiAgICAgICAgY2luID4+IHBbaV07CiAgICAgICAgYWRqW3BbaV1dLnB1c2hfYmFjayh7biArIGksIDB9KTsKICAgICAgICBhZGpbbiArIGldLnB1c2hfYmFjayh7cFtpXSwgMH0pOwogICAgICAgIHBxLnB1c2goTm9kZShuICsgaSwgbiArIGksIDApKTsKICAgICAgICBkW24gKyBpXSA9IHswLCBuICsgaX07CiAgICB9CiAgICAKICAgIC8vIEluaXRpYWxpemUgc291cmNlcyBhbmQgaGFuZGxlIHNhbWUgbG9jYXRpb24KICAgIAogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbTsgaSsrKQogICAgewogICAgICAgIGludCB4LCB5OwogICAgICAgIGxsIHc7CiAgICAgICAgY2luID4+IHggPj4geSA+PiB3OwogICAgICAgIGFkalt4XS5wdXNoX2JhY2soe3ksIHd9KTsKICAgICAgICBhZGpbeV0ucHVzaF9iYWNrKHt4LCB3fSk7CiAgICB9CiAgICAKICAgIHdoaWxlIChwcS5zaXplKCkpCiAgICB7CiAgICAgICAgTm9kZSB0ID0gcHEudG9wKCk7CiAgICAgICAgcHEucG9wKCk7CiAgICAgICAgaW50IHRvcCA9IHQudG9wOwogICAgICAgIGxsIGRpc3QgPSB0LmRpc3Q7CiAgICAgICAgaW50IHNvdXJjZSA9IHQuc291cmNlOwogICAgICAgIAogICAgICAgIGlmIChpaShkaXN0LCBzb3VyY2UpICE9IGRbdG9wXSkKICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgCiAgICAgICAgZm9yIChpaSBwciA6IGFkalt0b3BdKQogICAgICAgIHsKICAgICAgICAgICAgaW50IG5leHRfdG9wID0gcHIuZmk7CiAgICAgICAgICAgIGxsIHcgPSBwci5zZTsKICAgICAgICAgICAgbGwgbmV3X2Rpc3QgPSBkaXN0ICsgdzsKICAgICAgICAgICAgCiAgICAgICAgICAgIGlmIChkW25leHRfdG9wXS5zZSAhPSBJTkYgJiYgZFtuZXh0X3RvcF0uc2UgIT0gc291cmNlKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBsbCB0b3RhbF9kaXN0ID0gbmV3X2Rpc3QgKyBkW25leHRfdG9wXS5maTsKICAgICAgICAgICAgICAgIGludCBvdGhlcl9zb3VyY2UgPSBkW25leHRfdG9wXS5zZTsKICAgICAgICAgICAgICAgIGFuc1tzb3VyY2VdID0gbWluKGFuc1tzb3VyY2VdLCB7dG90YWxfZGlzdCwgb3RoZXJfc291cmNlfSk7CiAgICAgICAgICAgICAgICBhbnNbb3RoZXJfc291cmNlXSA9IG1pbihhbnNbb3RoZXJfc291cmNlXSwge3RvdGFsX2Rpc3QsIHNvdXJjZX0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICBpZiAoZFtuZXh0X3RvcF0gPiBpaShuZXdfZGlzdCwgc291cmNlKSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgZFtuZXh0X3RvcF0gPSBpaShuZXdfZGlzdCwgc291cmNlKTsKICAgICAgICAgICAgICAgIHBxLnB1c2goTm9kZShuZXh0X3RvcCwgc291cmNlLCBuZXdfZGlzdCkpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgCiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBrOyBpKyspCiAgICAgICAgY291dCA8PCBhbnNbaSArIG5dLnNlIC0gbiA8PCAnICc7Cn0=