#include <bits/stdc++.h>
#define pb push_back
#define pii pair<int,int>
#define fi first
#define int long long
#define se second
#define ios ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
#define TXT "test"
#define freo if(fopen(TXT".inp","r")){freopen(TXT".inp","r",stdin); freopen(TXT".out","w",stdout);}
using namespace std;
const int MXN = 1e5 + 5;
int n, m, s, t;
vector<int> a[MXN];
int dis[MXN], par[MXN];
void solve()
{
cin >> n >> m >> s >> t;
for (int i = 1; i <= m; i++)
{
int u, v;
cin >> u >> v;
a[u].push_back(v);
a[v].push_back(u);
}
memset(dis, -1, sizeof dis);
queue<int> q;
dis[s] = 0;
q.push(s);
while (!q.empty())
{
int u = q.front();
q.pop();
for (int v : a[u])
{
if (dis[v] == -1)
{
dis[v] = dis[u] + 1;
q.push(v);
}
}
}
if (dis[t] == -1)
{
cout << -1;
return;
}
memset(par, -1, sizeof par);
vector<int> res;
int cur = t;
while (cur != s)
{
res.push_back(cur);
int best = -1;
for (int v : a[cur])
{
if (dis[v] == dis[cur] - 1)
{
if (best == -1 || v < best)
{
best = v;
}
}
}
if (best == -1)
{
cout << -1;
return;
}
par[cur] = best;
cur = best;
}
res.push_back(s);
reverse(res.begin(), res.end());
for (int x : res) cout << x << " ";
}
main()
{
ios;
freo;
solve();
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgcGlpIHBhaXI8aW50LGludD4KI2RlZmluZSBmaSBmaXJzdAojZGVmaW5lIGludCBsb25nIGxvbmcKI2RlZmluZSBzZSBzZWNvbmQKI2RlZmluZSBpb3MgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7IGNpbi50aWUoTlVMTCk7IGNvdXQudGllKE5VTEwpOwojZGVmaW5lIFRYVCAidGVzdCIKI2RlZmluZSBmcmVvIGlmKGZvcGVuKFRYVCIuaW5wIiwiciIpKXtmcmVvcGVuKFRYVCIuaW5wIiwiciIsc3RkaW4pOyBmcmVvcGVuKFRYVCIub3V0IiwidyIsc3Rkb3V0KTt9Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY29uc3QgaW50IE1YTiA9IDFlNSArIDU7CgppbnQgbiwgbSwgcywgdDsKdmVjdG9yPGludD4gYVtNWE5dOwppbnQgZGlzW01YTl0sIHBhcltNWE5dOwoKdm9pZCBzb2x2ZSgpCnsKICAgIGNpbiA+PiBuID4+IG0gPj4gcyA+PiB0OwogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbTsgaSsrKQogICAgewogICAgICAgIGludCB1LCB2OwogICAgICAgIGNpbiA+PiB1ID4+IHY7CiAgICAgICAgYVt1XS5wdXNoX2JhY2sodik7CiAgICAgICAgYVt2XS5wdXNoX2JhY2sodSk7CiAgICB9CgogICAgbWVtc2V0KGRpcywgLTEsIHNpemVvZiBkaXMpOwogICAgcXVldWU8aW50PiBxOwogICAgZGlzW3NdID0gMDsKICAgIHEucHVzaChzKTsKCiAgICB3aGlsZSAoIXEuZW1wdHkoKSkKICAgIHsKICAgICAgICBpbnQgdSA9IHEuZnJvbnQoKTsKICAgICAgICBxLnBvcCgpOwogICAgICAgIGZvciAoaW50IHYgOiBhW3VdKQogICAgICAgIHsKICAgICAgICAgICAgaWYgKGRpc1t2XSA9PSAtMSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgZGlzW3ZdID0gZGlzW3VdICsgMTsKICAgICAgICAgICAgICAgIHEucHVzaCh2KTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBpZiAoZGlzW3RdID09IC0xKQogICAgewogICAgICAgIGNvdXQgPDwgLTE7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG1lbXNldChwYXIsIC0xLCBzaXplb2YgcGFyKTsKICAgIHZlY3RvcjxpbnQ+IHJlczsKICAgIGludCBjdXIgPSB0OwoKICAgIHdoaWxlIChjdXIgIT0gcykKICAgIHsKICAgICAgICByZXMucHVzaF9iYWNrKGN1cik7CiAgICAgICAgaW50IGJlc3QgPSAtMTsKICAgICAgICBmb3IgKGludCB2IDogYVtjdXJdKQogICAgICAgIHsKICAgICAgICAgICAgaWYgKGRpc1t2XSA9PSBkaXNbY3VyXSAtIDEpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGlmIChiZXN0ID09IC0xIHx8IHYgPCBiZXN0KQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGJlc3QgPSB2OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmIChiZXN0ID09IC0xKQogICAgICAgIHsKICAgICAgICAgICAgY291dCA8PCAtMTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBwYXJbY3VyXSA9IGJlc3Q7CiAgICAgICAgY3VyID0gYmVzdDsKICAgIH0KICAgIHJlcy5wdXNoX2JhY2socyk7CiAgICByZXZlcnNlKHJlcy5iZWdpbigpLCByZXMuZW5kKCkpOwogICAgZm9yIChpbnQgeCA6IHJlcykgY291dCA8PCB4IDw8ICIgIjsKfQptYWluKCkKewogICAgaW9zOwogICAgZnJlbzsKICAgIHNvbHZlKCk7Cn0=