#include #include #include using namespace atcoder; using mint = modint998244353; using namespace std; #define rep(i,n) for (int i = 0; i < (n); ++i) #define Inf32 1000000001 #define Inf64 1000000000000000001 int ans[100001],sum[100001]; vector> E; string S; void dfs(int cv,int pv){ rep(i,E[cv].size()){ int to = E[cv][i]; dfs(to,cv); sum[cv] ^= sum[to]; } if(cv!=0){ if((S[cv-1]=='#')==sum[cv])ans[cv] = 0; else ans[cv] = 1; } else{ for(int i=1;i>n; E.resize(n); for(int i=1;i>p; p--; E[p].push_back(i); } cin>>S; dfs(0,-1); int K; cin>>K; dsu D(n); rep(_,K){ int u,v; cin>>u>>v; u--,v--; D.merge(u,v); } auto g = D.groups(); rep(i,g.size()){ int x = 0; rep(j,g[i].size())x ^= ans[g[i][j]]; if(x!=0){ cout<<"No"<