#include #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].set(j); for(int st=0;st oddVis,evenVis; bitset onv,env; env.set(st); evenVis.set(st); for(ll t=1;t<=min((ll)2*N,D);t++){ if(t%2){ bitset state; for(int now=env._Find_first();now!=L;now=env._Find_next(now)){ state|=g[now]; } onv=(~oddVis)&state; if(onv.count()==0) break; oddVis|=state; }else{ bitset state; for(int now=onv._Find_first();now!=L;now=onv._Find_next(now)){ state|=g[now]; } env=(~evenVis)&state; if(env.count()==0) break; evenVis|=state; } } if(D%2){ bool ng=false; rep(i,N) if(oddVis[i]==0) ng=true; if(ng){ cout<<"No"<