#include <iostream>
#include <vector>
#include <queue>
#include <string.h>
#include <deque>
using namespace std;
vector<pair<int,int>> tree[10000];
int path[10000][501];
char tr[10000];
struct vert{
int value;
int ver;
int cruel;
vert(int a,int b, int c):value(a),ver(b),cruel(c){}
const bool operator < (const vert& x) const{
return value < x.value;
}
};
int main() {
// your code goes here
int K,N,M,S,F;
cin >> K >> N >> M >> S >> F;
S--;
F--;
for (int i=0; i < M; i++){
int u,v,l;
u = i+1;
v = (i+1)%N+1;
l = i%500 + 1;
//cin >> u >> v >> l;
u--;
v--;
if (l <= K){
tree[u].push_back( make_pair(v,l) );
tree[v].push_back( make_pair(u,l) );
}
}
int Q;
cin >> Q;
for (int i=0; i < Q; i++){
int a;
a = i+1;
//cin >> a;
tr[a-1] = 1;
}
memset(path, 0x7F , sizeof(path));
path[S][K] = 0;
deque<vert> Queue;
//priority_queue<vert> Queue;
Queue.push_front(vert(0,S,K));
while (!Queue.empty()){
vert cur = Queue.front();
//cout << "? "<<cur.value<<" "<<cur.ver<<" "<<cur.cruel<<endl;
Queue.pop_front();
//if (cur.value != path[cur.ver][cur.cruel])
// continue;
for (auto z : tree[cur.ver]){
if (z.second <= cur.cruel)
if (path[z.first][cur.cruel - z.second] > cur.value){
path[z.first][cur.cruel - z.second] = cur.value;
//cout << "+ "<<cur.value<<" "<<z.first<<" "<<cur.cruel - z.second<<endl;
Queue.push_front( vert(cur.value, z.first, cur.cruel - z.second) );
//for (int b=cur.cruel - z.second; b >=0; b--)
// path[z.first][b] = min(path[z.first][b], cur.value);
}
if (tr[cur.ver])
if (path[z.first][K - z.second] > cur.value + 1){
path[z.first][K - z.second] = cur.value + 1;
//cout << "+ "<<cur.value+1<<" "<<z.first<<" "<<K - z.second<<endl;
Queue.push_back( vert(cur.value+1, z.first, K - z.second) );
//for (int b=K - z.second; b >=0; b--)
// path[z.first][b] = min(path[z.first][b], cur.value+1);
}
}
}
int res = 0x7F7F7F7F;
for (int i=0; i <= K; i++)
res = min(res, path[F][i] );
if (res == 0x7F7F7F7F)
res = -1;
cout << res;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8cXVldWU+CiNpbmNsdWRlIDxzdHJpbmcuaD4KI2luY2x1ZGUgPGRlcXVlPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdmVjdG9yPHBhaXI8aW50LGludD4+IHRyZWVbMTAwMDBdOwppbnQgcGF0aFsxMDAwMF1bNTAxXTsKY2hhciB0clsxMDAwMF07CgpzdHJ1Y3QgdmVydHsKCWludCB2YWx1ZTsKCWludCB2ZXI7CglpbnQgY3J1ZWw7Cgl2ZXJ0KGludCBhLGludCBiLCBpbnQgYyk6dmFsdWUoYSksdmVyKGIpLGNydWVsKGMpe30KCWNvbnN0IGJvb2wgb3BlcmF0b3IgPCAoY29uc3QgdmVydCYgeCkgY29uc3R7CgkJcmV0dXJuIHZhbHVlIDwgeC52YWx1ZTsKCX0KfTsKCgppbnQgbWFpbigpIHsKCS8vIHlvdXIgY29kZSBnb2VzIGhlcmUKCWludCBLLE4sTSxTLEY7CgljaW4gPj4gSyA+PiBOID4+IE0gPj4gUyA+PiBGOwoJUy0tOwoJRi0tOwoJZm9yIChpbnQgaT0wOyBpIDwgTTsgaSsrKXsKCQlpbnQgdSx2LGw7CgkJdSA9IGkrMTsKCQl2ID0gKGkrMSklTisxOwoJCWwgPSBpJTUwMCArIDE7CgkJLy9jaW4gPj4gdSA+PiB2ID4+IGw7CgkJdS0tOwoJCXYtLTsKCQlpZiAobCA8PSBLKXsKCQkJdHJlZVt1XS5wdXNoX2JhY2soIG1ha2VfcGFpcih2LGwpICk7CgkJCXRyZWVbdl0ucHVzaF9iYWNrKCBtYWtlX3BhaXIodSxsKSApOwoJCX0KCX0KCWludCBROwoJY2luID4+IFE7Cglmb3IgKGludCBpPTA7IGkgPCBROyBpKyspewoJCWludCBhOwoJCWEgPSBpKzE7CgkJLy9jaW4gPj4gYTsKCQl0clthLTFdID0gMTsKCX0KCW1lbXNldChwYXRoLCAweDdGICwgc2l6ZW9mKHBhdGgpKTsKCXBhdGhbU11bS10gPSAwOwoJZGVxdWU8dmVydD4gUXVldWU7CgkvL3ByaW9yaXR5X3F1ZXVlPHZlcnQ+IFF1ZXVlOwoJUXVldWUucHVzaF9mcm9udCh2ZXJ0KDAsUyxLKSk7Cgl3aGlsZSAoIVF1ZXVlLmVtcHR5KCkpewoJCXZlcnQgY3VyID0gUXVldWUuZnJvbnQoKTsKCQkvL2NvdXQgPDwgIj8gIjw8Y3VyLnZhbHVlPDwiICI8PGN1ci52ZXI8PCIgIjw8Y3VyLmNydWVsPDxlbmRsOwoJCVF1ZXVlLnBvcF9mcm9udCgpOwoJCS8vaWYgKGN1ci52YWx1ZSAhPSBwYXRoW2N1ci52ZXJdW2N1ci5jcnVlbF0pCgkJLy8JY29udGludWU7CgkJZm9yIChhdXRvIHogOiB0cmVlW2N1ci52ZXJdKXsKCQkJaWYgKHouc2Vjb25kIDw9IGN1ci5jcnVlbCkKCQkJCWlmIChwYXRoW3ouZmlyc3RdW2N1ci5jcnVlbCAtIHouc2Vjb25kXSA+IGN1ci52YWx1ZSl7CgkJCQkJcGF0aFt6LmZpcnN0XVtjdXIuY3J1ZWwgLSB6LnNlY29uZF0gPSBjdXIudmFsdWU7CgkJCQkJLy9jb3V0IDw8ICIrICI8PGN1ci52YWx1ZTw8IiAiPDx6LmZpcnN0PDwiICI8PGN1ci5jcnVlbCAtIHouc2Vjb25kPDxlbmRsOwoJCQkJCVF1ZXVlLnB1c2hfZnJvbnQoIHZlcnQoY3VyLnZhbHVlLCB6LmZpcnN0LCBjdXIuY3J1ZWwgLSB6LnNlY29uZCkgKTsKCQkJCQkvL2ZvciAoaW50IGI9Y3VyLmNydWVsIC0gei5zZWNvbmQ7IGIgPj0wOyBiLS0pCgkJCQkJLy8JcGF0aFt6LmZpcnN0XVtiXSA9IG1pbihwYXRoW3ouZmlyc3RdW2JdLCBjdXIudmFsdWUpOwoJCQkJfQoJCQlpZiAodHJbY3VyLnZlcl0pCgkJCQlpZiAocGF0aFt6LmZpcnN0XVtLIC0gei5zZWNvbmRdID4gY3VyLnZhbHVlICsgMSl7CgkJCQkJcGF0aFt6LmZpcnN0XVtLIC0gei5zZWNvbmRdID0gY3VyLnZhbHVlICsgMTsKCQkJCQkvL2NvdXQgPDwgIisgIjw8Y3VyLnZhbHVlKzE8PCIgIjw8ei5maXJzdDw8IiAiPDxLIC0gei5zZWNvbmQ8PGVuZGw7CgkJCQkJUXVldWUucHVzaF9iYWNrKCB2ZXJ0KGN1ci52YWx1ZSsxLCB6LmZpcnN0LCBLIC0gei5zZWNvbmQpICk7CgkJCQkJLy9mb3IgKGludCBiPUsgLSB6LnNlY29uZDsgYiA+PTA7IGItLSkKCQkJCQkvLwlwYXRoW3ouZmlyc3RdW2JdID0gbWluKHBhdGhbei5maXJzdF1bYl0sIGN1ci52YWx1ZSsxKTsKCQkJCX0JCQkJCgkJfQoJfQoJaW50IHJlcyA9IDB4N0Y3RjdGN0Y7Cglmb3IgKGludCBpPTA7IGkgPD0gSzsgaSsrKQoJCXJlcyA9IG1pbihyZXMsIHBhdGhbRl1baV0gKTsKCWlmIChyZXMgPT0gMHg3RjdGN0Y3RikKCQlyZXMgPSAtMTsKCWNvdXQgPDwgcmVzOwoJcmV0dXJuIDA7Cn0=