#include <bits/stdc++.h>
#define INT long long int
using namespace std;
int n, m, a[100010], chk[100010], p;
vector<int> G[100010];
stack<int> s;
void solve(int x)
{
    if( p == n or x == 0 ) return;
    chk[x] = 1;
    map<int, int> ch;
    int cnt = 0;
    for(int i = 0 ; i < G[x].size() ; i++ )
        if( !chk[G[x][i]] ) ch[G[x][i]] = 1, cnt++;
    for(int i = 0 ; p < n and i < cnt ; i++ )
    {
        p++;
        if( p == n ) continue;
        if( !chk[a[p]] and ch[a[p]] )
            solve(a[p]);
        else
        {
            printf("0");
            exit(0);
        }
    }
}
int main(int argc, char *argv[])
{
    FILE *inn = fopen(argv[1], "r");
	FILE *in = fopen(argv[2], "r");
    fscanf(inn, "%d%d", &n, &m);
    for(int i = 0 ; i < m ; i++ )
    {
        int x, y;
        fscanf(inn, "%d%d",&x, &y);
        G[x].push_back(y);
        G[y].push_back(x);
    }
    for(int i = 0 ; i < n ; i++ ) fscanf(in,"%d", &a[i]);
    solve(1);
    printf("1");
}

/*
7 6
1 2
1 3
2 4
2 5
3 6
3 7

1 2 3 4 5 6 7
*/
