#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair <ll, int> pli;
typedef pair <int, int> pii;
typedef pair <ll, ll> pll;
#define fr first
#define sc second
#define sz(x) int(x.size())
#define all(x) x.begin(), x.end()
#define lb lower_bound
#define ub upper_bound
#define ins insert
#define pb push_back
#define mp(a, b) make_pair(a, b)
#define ppb pop_back()
#define mint ModInt
const int mod = 998244353;
const int N = 2e5 + 2, inf = 1e9;
const ll oo = 1e18;
vector <pii> g[N];
vector <int> gr[N], o;
bool u[N];
ll d[N];
int pr[N], a[N], b[N], c[N], n, m, k, s;
vector <int> arr;
void dfs(int v){
u[v] = 1;
o.pb(v);
for(auto to : gr[v]){
if(!u[to])dfs(to);
}
}
void regular_dj(vector <int> list){
set <pli> st;
fill(d, d + n + 1, oo);
for(auto to : list){
st.ins({0, to});
d[to] = 0;
pr[to] = to;
}
//return;
while(!st.empty()){
int v = st.begin() -> sc;
st.erase(st.begin());
//cerr << v << endl;
for(auto it : g[v]){
int to = it.fr, w = it.sc;
if(d[to] > d[v] + w){
st.erase({d[to], to});
d[to] = d[v] + w;
pr[to] = pr[v];
st.ins({d[to], to});
}
}
}
}
void solve(){
cin >> n >> m >> k >> s;
for(int i = 1;i <= m; ++ i){
cin >> a[i] >> b[i] >> c[i];
g[a[i]].pb({b[i], c[i]});
g[b[i]].pb({a[i], c[i]});
}
//return;
for(int i = 1;i <= k; ++ i){
int x;
cin >> x;
o.pb(x);
}
vector <int> ans;
//return;
regular_dj(o);
o.clear();
for(int i = 1;i <= m; ++ i){
if(pr[a[i]] != pr[b[i]] && d[a[i]] + d[b[i]] + c[i] <= s){
int v = pr[a[i]], to = pr[b[i]];
gr[v].pb(to);
gr[to].pb(v);
}
}
dfs(1);
regular_dj(o);
for(int i = 1;i <= n; ++ i){
if(d[i] <= s){
ans.pb(i);
}
}
cout << sz(ans) << endl;
for(auto to : ans){
cout << to << " ";
}
}
int main(){
//freopen("input.txt", "r", stdin);
//freopen("output.txt", "w", stdout);
ios_base::sync_with_stdio(0);
int T = 1;
//cin >> T;
while(T--){
solve();
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnR5cGVkZWYgbG9uZyBsb25nIGxsOwp0eXBlZGVmIHBhaXIgPGxsLCBpbnQ+IHBsaTsKdHlwZWRlZiBwYWlyIDxpbnQsIGludD4gcGlpOwp0eXBlZGVmIHBhaXIgPGxsLCBsbD4gcGxsOwojZGVmaW5lIGZyIGZpcnN0CiNkZWZpbmUgc2Mgc2Vjb25kCiNkZWZpbmUgc3ooeCkgaW50KHguc2l6ZSgpKQojZGVmaW5lIGFsbCh4KSB4LmJlZ2luKCksIHguZW5kKCkKI2RlZmluZSBsYiBsb3dlcl9ib3VuZAojZGVmaW5lIHViIHVwcGVyX2JvdW5kCiNkZWZpbmUgaW5zIGluc2VydAojZGVmaW5lIHBiIHB1c2hfYmFjawojZGVmaW5lIG1wKGEsIGIpIG1ha2VfcGFpcihhLCBiKQojZGVmaW5lIHBwYiBwb3BfYmFjaygpCiNkZWZpbmUgbWludCBNb2RJbnQKY29uc3QgaW50IG1vZCA9IDk5ODI0NDM1MzsKY29uc3QgaW50IE4gPSAyZTUgKyAyLCBpbmYgPSAxZTk7CmNvbnN0IGxsIG9vID0gMWUxODsKdmVjdG9yIDxwaWk+IGdbTl07CnZlY3RvciA8aW50PiBncltOXSwgbzsKYm9vbCB1W05dOwpsbCBkW05dOwppbnQgcHJbTl0sIGFbTl0sIGJbTl0sIGNbTl0sIG4sIG0sIGssIHM7CnZlY3RvciA8aW50PiBhcnI7CnZvaWQgZGZzKGludCB2KXsKCXVbdl0gPSAxOwoJby5wYih2KTsKCWZvcihhdXRvIHRvIDogZ3Jbdl0pewoJCWlmKCF1W3RvXSlkZnModG8pOwoJfQp9CnZvaWQgcmVndWxhcl9kaih2ZWN0b3IgPGludD4gbGlzdCl7CglzZXQgPHBsaT4gc3Q7CglmaWxsKGQsIGQgKyBuICsgMSwgb28pOwoJZm9yKGF1dG8gdG8gOiBsaXN0KXsKCQlzdC5pbnMoezAsIHRvfSk7CgkJZFt0b10gPSAwOwoJCXByW3RvXSA9IHRvOwoJfQoJLy9yZXR1cm47Cgl3aGlsZSghc3QuZW1wdHkoKSl7CgkJaW50IHYgPSBzdC5iZWdpbigpIC0+IHNjOwoJCXN0LmVyYXNlKHN0LmJlZ2luKCkpOwoJCS8vY2VyciA8PCB2IDw8IGVuZGw7CgkJZm9yKGF1dG8gaXQgOiBnW3ZdKXsKCQkJaW50IHRvID0gaXQuZnIsIHcgPSBpdC5zYzsKCQkJaWYoZFt0b10gPiBkW3ZdICsgdyl7CgkJCQlzdC5lcmFzZSh7ZFt0b10sIHRvfSk7CgkJCQlkW3RvXSA9IGRbdl0gKyB3OwoJCQkJcHJbdG9dID0gcHJbdl07CgkJCQlzdC5pbnMoe2RbdG9dLCB0b30pOwoJCQl9CgkJfQoJfQp9Cgp2b2lkIHNvbHZlKCl7CgljaW4gPj4gbiA+PiBtID4+IGsgPj4gczsKCWZvcihpbnQgaSA9IDE7aSA8PSBtOyArKyBpKXsKCQljaW4gPj4gYVtpXSA+PiBiW2ldID4+IGNbaV07CgkJZ1thW2ldXS5wYih7YltpXSwgY1tpXX0pOwoJCWdbYltpXV0ucGIoe2FbaV0sIGNbaV19KTsKCX0KCS8vcmV0dXJuOwoJZm9yKGludCBpID0gMTtpIDw9IGs7ICsrIGkpewoJCWludCB4OwoJCWNpbiA+PiB4OwoJCW8ucGIoeCk7Cgl9Cgl2ZWN0b3IgPGludD4gYW5zOwoJLy9yZXR1cm47CglyZWd1bGFyX2RqKG8pOwoJby5jbGVhcigpOwoJZm9yKGludCBpID0gMTtpIDw9IG07ICsrIGkpewoJCWlmKHByW2FbaV1dICE9IHByW2JbaV1dICYmIGRbYVtpXV0gKyBkW2JbaV1dICsgY1tpXSA8PSBzKXsKCQkJaW50IHYgPSBwclthW2ldXSwgdG8gPSBwcltiW2ldXTsKCQkJZ3Jbdl0ucGIodG8pOwoJCQlnclt0b10ucGIodik7CgkJfQoJfQoJZGZzKDEpOwoJcmVndWxhcl9kaihvKTsKCWZvcihpbnQgaSA9IDE7aSA8PSBuOyArKyBpKXsKCQlpZihkW2ldIDw9IHMpewoJCQlhbnMucGIoaSk7CgkJfQoJfQoJY291dCA8PCBzeihhbnMpIDw8IGVuZGw7Cglmb3IoYXV0byB0byA6IGFucyl7CgkJY291dCA8PCB0byA8PCAiICI7Cgl9Cn0KCmludCBtYWluKCl7CgkvL2ZyZW9wZW4oImlucHV0LnR4dCIsICJyIiwgc3RkaW4pOwoJLy9mcmVvcGVuKCJvdXRwdXQudHh0IiwgInciLCBzdGRvdXQpOwoJaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsKCWludCBUID0gMTsKCS8vY2luID4+IFQ7Cgl3aGlsZShULS0pewoJCXNvbHZlKCk7Cgl9CglyZXR1cm4gMDsKfQo=