#include<bits/stdc++.h>
using namespace std;
struct edge{
int dau,cuoi,w;
};
bool visited[1001];
int parent[1001];
vector<int> ke[1001];
void DFS(int u){
visited[u] = true;
for(int x : ke[u]){
if(!visited[x]){
parent[x] = u ;
DFS(x);
}
}
}
int main(){
int n , m , s , t ;
cin >> n >> m >> s >> t;
for(int i = 1 ; i <= m ; i++){
int x,y;
cin >> x >> y;
ke[x].push_back(y);
ke[y].push_back(x);
}
for(int i = 1 ; i <= n ; i++){
sort(ke[i].begin() , ke[i].end());
}
// nhap
vector<int> res;
DFS(s);
if(!visited[t]){
cout << "-1";
}
else{
while(t != s){
res.push_back(t);
t = parent[t];
}
res.push_back(s);
reverse(res.begin(),res.end());
for(int x : res){
cout << x << " ";
}
}
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKc3RydWN0IGVkZ2V7CglpbnQgZGF1LGN1b2ksdzsKfTsKYm9vbCB2aXNpdGVkWzEwMDFdOwppbnQgcGFyZW50WzEwMDFdOwp2ZWN0b3I8aW50PiBrZVsxMDAxXTsKdm9pZCBERlMoaW50IHUpewoJdmlzaXRlZFt1XSA9IHRydWU7Cglmb3IoaW50IHggOiBrZVt1XSl7CgkJaWYoIXZpc2l0ZWRbeF0pewoJCQlwYXJlbnRbeF0gPSB1IDsKCQkJREZTKHgpOwoJCX0KCX0KfQoKaW50IG1haW4oKXsKCWludCBuICwgbSAsIHMgLCB0IDsgCgljaW4gPj4gbiA+PiBtID4+IHMgPj4gdDsKCWZvcihpbnQgaSA9IDEgOyBpIDw9IG0gOyBpKyspewoJCWludCB4LHk7CgkJY2luID4+IHggPj4geTsKCQlrZVt4XS5wdXNoX2JhY2soeSk7CgkJa2VbeV0ucHVzaF9iYWNrKHgpOwoJfQoJZm9yKGludCBpID0gMSA7IGkgPD0gbiA7IGkrKyl7CgkJc29ydChrZVtpXS5iZWdpbigpICwga2VbaV0uZW5kKCkpOwoJfQoJLy8gbmhhcAoJdmVjdG9yPGludD4gcmVzOwoJREZTKHMpOwoJaWYoIXZpc2l0ZWRbdF0pewoJCWNvdXQgPDwgIi0xIjsKCX0KCWVsc2V7CgkJd2hpbGUodCAhPSBzKXsKCQkJcmVzLnB1c2hfYmFjayh0KTsKCQkJdCA9IHBhcmVudFt0XTsKCQl9CgkJcmVzLnB1c2hfYmFjayhzKTsKCQlyZXZlcnNlKHJlcy5iZWdpbigpLHJlcy5lbmQoKSk7CgkJZm9yKGludCB4IDogcmVzKXsKCQkJY291dCA8PCB4IDw8ICIgIjsKCQl9Cgl9Cn0=