#include #include #include #include #include #include #include #include #include #include #define mkp make_pair #define mkt make_tuple #define rep(i,n) for(int i = 0; i < (n); ++i) #define all(v) v.begin(),v.end() using namespace std; typedef long long ll; const ll MOD=1e9+7; template void chmin(T &a,const T &b){if(a>b) a=b;} template void chmax(T &a,const T &b){if(a>N>>D; vector E(N); rep(i,N) cin>>E[i]; if(N==1){ if(E[0][0]=='1') cout<<"Yes"<> g(N); rep(i,N) rep(j,N) if(E[i][j]=='1') g[i].push_back(j); for(int st=0;st oddVis(N,0),evenVis(N,0); vector onv,env; env.push_back(st); evenVis[st]=1; for(ll t=1;t<=min((ll)N,D);t++){ if(t%2){ for(auto now:env){ for(auto nex:g[now]){ if(oddVis[nex]) continue; oddVis[nex]=1; onv.push_back(nex); } } env.clear(); if(onv.empty()) break; }else{ for(auto now:onv){ for(auto nex:g[now]){ if(evenVis[nex]) continue; evenVis[nex]=1; env.push_back(nex); } } onv.clear(); if(env.empty()) break; } } if(D%2){ bool ng=false; rep(i,N) if(oddVis[i]==0) ng=true; if(ng){ cout<<"No"<