#include #include #include using namespace std; using namespace atcoder; using mint = modint1000000007; #define rep(i,n) for (int i = 0; i < (n); ++i) #define Inf 1000000000 int H,W; int get(int y,int x){ return y*W+x; } pair get(int v){ return make_pair(v/W,v%W); } string alpha = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; void go(vector S){ /* rep(i,S.size()){ cout< G(H*W+2); int s = H*W,t = H*W+1; vector dx = {1,-1,0,0},dy = {0,0,1,-1}; rep(i,H){ rep(j,W){ if(S[i][j]=='#')cnt++; else continue; if((i+j)%2==0){ G.add_edge(s,get(i,j),1); rep(k,4){ int y = i+dy[k],x = j + dx[k]; if(y<0||y>=H||x<0||x>=W)continue; G.add_edge(get(i,j),get(y,x),1); } } else G.add_edge(get(i,j),t,1); } } // cout<>H>>W; vector S(H); rep(i,H)cin>>S[i]; int u = -1,b = -1; rep(i,H){ if(S[i]!=string(W,'.')){ if(u==-1)u = i; b = i; } } rep(i,H){ int c = 0; rep(j,W){ if(S[i][j]=='.')c++; } if(c==0){ cout<<"No"< SS(H,string(W,'.')); for(int j=H-1;j>=0;j--){ if((i>>j)&1){ SS[j] = string(W,'#'); } else{ if(cur=u)continue; go(SS); } cout<<"No"<