#include <bits/stdc++.h>
using namespace std;
//variable
#define ld long double
#define ll long long
#define db double
#define ii pair<int,int>
#define f first
#define s second
#define mp make_pair
#define mt make_tuple
//vector
#define pb push_back
#define all(v) v.begin(),v.end()
#define len(a) (int)a.length()
#define sz(a) (int)a.size()
//mask
#define BIT(i) (1LL<<(i))
//better code, debugger
#define watch(n) cerr << #n << ": " << n << endl
#define debug(x) for (auto p: x) cerr<<p<<' ';cerr<<endl
#define forw(i,j,z) for(int i=(int)j;i<=(int)z;i++)
#define ford(i,j,z) for (int i=(int)j;i>=(int)z;i--)
#define fIlE "closing."
//auto seed = chrono::high_resolution_clock::now().time_since_epoch().count();
//mt19937 RAND(seed);
const int mod = 998244353;
inline int add(int u,int v){u+=v;if(u>=mod)u-=mod;return u;}
inline int dec(int u,int v){u-=v;if(u<0)u+=mod;return u;}
inline int mul(int u,int v){return (ll)u*v%mod;}
int n, m;
const int N = 3000 + 2;
ii edge[N];
vector<int> a[N], ok[N];
int per[N];
bool del[N];
struct DSU{
    int root = 0;
};
DSU dsu[N];

int findset(int u)
{
    return dsu[u].root == u ? u : dsu[u].root = findset(dsu[u].root);
}
void solve()
{
    cin >> n >> m;
    forw(i, 1, m){
        int u, v;
        cin >> u >> v;
        edge[i] = mp(u, v);
        a[u].pb(i);
        a[v].pb(i);
    }
    forw(i, 1, n){
        cin >> per[i];
        for (int e : a[per[i]])
        {
            if (!del[e])
            {
                del[e] = 1;
                ok[i].pb(e);
            }
        }
    }
    vector<string> ans;
    int cnt = 0;
    ford(i, n, 1){
        dsu[per[i]].root = per[i];
        ++cnt;
        for (int e : ok[i])
        {
            int u = edge[e].f, v = edge[e].s;
            u = findset(u), v = findset(v);
            if (u == v) continue;
            dsu[u].root = v;
            cnt--;
        }
        ans.pb(cnt <= 1 ? "YES\n" : "NO\n");
    }
    ford(i, n - 1, 0) cout << ans[i];
}
signed main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    if (fopen(fIlE"in", "r"))
        freopen(fIlE"in","r",stdin), freopen(fIlE"out","w",stdout);
    //time_t TIME_TU=clock();
    int t=1;
//    cin>>t;
    while(t--)
        solve();
    //time_t TIME_TV=clock();
    //cerr<<(db)(TIME_TV-TIME_TU)/CLOCKS_PER_SEC<<endl;
    return 0;
}
