#include <bits/stdc++.h>
using namespace std;
const int N=1e5+10;
const int mod = 998244353;
typedef long long ll;
typedef unsigned long long ull;
const ll INF = 1e18;
ll n,m;
vector<int>e[N];
bool vis[N];
bool a[N];
void dfs(ll u,ll fa)
{
    for(auto v:e[u])
    {
        if(a[v])continue;
        if(vis[v])continue;
        vis[v]=true;
        
        dfs(v,u);
    }
}


void solve()
{
    cin>>n>>m;
    for(int i=1;i<=n;i++)
    {
        cin>>a[i];
    }
    for(int i=1;i<=m;i++)
    {
        int u,v;
        cin>>u>>v;
        e[u].push_back(v);
        e[v].push_back(u);
    }
    dfs(1,0);
    if(a[1]==1)
    {
        cout<<"No\n";
    }
    else if(vis[n])
    {
        cout<<"Yes\n";
    }
    else cout<<"No\n";
    


}

int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    int t=1;
    // cin>>t;
    while(t--)
    {
        solve();

    }


    return 0;
}

简单dfs题