#include <bits/stdc++.h>
using namespace std;

constexpr int INF = 1e9;

int main() {
    int n, m, l, s, t;
    while(cin >> n >> m >> l >> s >> t, n) {
        s--;
        vector<vector<int>> d(n, vector<int>(n, INF));
        for(int i=0; i<n; ++i) {
            d[i][i] = 0;
        }
        for(int i=0; i<m; ++i) {
            int a, b, c;
            cin >> a >> b >> c;
            a--; b--;
            d[a][b] = d[b][a] = c;
        }
        for(int k=0; k<n; ++k) {
            for(int i=0; i<n; ++i) {
                for(int j=0; j<n; ++j) {
                    d[i][j] = min(d[i][j], d[i][k] + d[k][j]);
                }
            }
        }
        vector<int> rp(l), e(l);
        for(int i=0; i<l; ++i) {
            cin >> rp[i] >> e[i];
            rp[i]--;
        }

        vector<vector<int>> dp(1 << l, vector<int>(l, INF));
        for(int i=0; i<l; ++i) {
            dp[1 << i][i] = d[s][rp[i]];
        }
        for(int S=1; S<(1<<l); ++S) {
            for(int i=0; i<l; ++i) {
                for(int j=0; j<l; ++j) {
                    if((S >> j) & 1) {
                        continue;
                    }
                    int nS = S | (1 << j);
                    dp[nS][j] = min(dp[nS][j], dp[S][i] + d[rp[i]][rp[j]]);
                }
            }
        }
        int res = 0;
        for(int S=0; S<1<<l; ++S) {
            int sum = INF;
            for(int i=0; i<l; ++i) {
                sum = min(sum, dp[S][i] + d[rp[i]][s]);
            }
            for(int i=0; i<l; ++i) {
                if((S >> i) & 1) {
                    sum += e[i];
                }
            }
            if(sum <= t) {
                res = max(res, __builtin_popcount(S));
            }
        }
        cout << res << endl;
    }
}
