#include <cstdio>
#include <cstring>
#include <algorithm>
#include <vector>
#include <cstdlib>

using namespace std;

int n, m;

vector <int> V[555555];

char ch[555555];

int vis[555555][2], inst[555555][2];

void DFS(int x, int y) {
    inst[x][y] = 1;
    vis[x][y] = 1;
    for(int i = 0; i < V[x].size(); i++)
        if(ch[V[x][i]] != ch[x] ^ y) {
            if(inst[V[x][i]][!y]) {
                puts("Yes");
                exit(0);
            } else if(!vis[V[x][i]][!y]) DFS(V[x][i], !y);
        }
    inst[x][y] = 0;
}

int main() {
    scanf("%d%d", &n, &m);
    scanf("%s", ch + 1);
    for(int i = 1; i <= m; i++) {
        int a, b;
        scanf("%d%d", &a, &b);
        V[a].push_back(b);
        V[b].push_back(a);
    }
    for(int i = 0; i < 2; i++)
        for(int j = 1; j <= n; j++) if(!vis[j][i]) {
            DFS(j, i);
        }
    puts("No");
    return 0;
}