#include<bits/stdc++.h>

using namespace std;

int G[100][100], n, m, S[100], sz;
int ans[100], curr[100], vis[100];
bool fd = false;

void solve(int start, int len){
    vis[start] = 1;
    curr[len] = start;
    if(len == m-1){
        fd = true;
        for(int i = 0;i <= m;i++) ans[i] = curr[i];return;
    }
    for(int i = 0;i < n;i++){
        if(G[start][i] == 1 && vis[i] == 0 && S[i] == 1){
            solve(i, len+1);
        }
    }
    vis[start] = 0;
}

int main(){
    cin >> n >> sz;
    int p, q;
    for(int i = 0;i < sz;i++){
        cin >> p >> q;G[p][q] = 1;G[q][p] = 1;
    }
    cin >> m;
    for(int i = 0;i < m;i++){
        cin >> p;S[p] = 1;
    }
    for(int i = 0;i < n;i++){
        if(S[i] == 1){
            solve(i, 0);
            break;
        }
    }
    if(fd == false){
        cout << "No such path" << endl;
    }else{
        for(int i = 0;i < m;i++){
            cout << ans[i] << " ";
        }cout << endl;
    }
return 0;
}
