//zoj 2850 ?????
#include <iostream>
#include<cstdio>
using namespace std;
const int maxn=12;
const int maxm=12;
bool a[maxn][maxm];
int main()
{
int n,m,i,j,k;
while(scanf("%d%d",&n,&m)!=EOF)
{
if(n==0&&m==0)break;
for(i=0;i<n;i++)
for(j=0;j<m;j++)
scanf("%d",&a[i][j]);
bool flag=0,flag2=1;
for(i=0;i<n;i++)
for(j=0;j<m;j++)
{
if(!a[i][j])
{
flag=1;
if(i==n-1&&j==m-1)
continue;
else if(i==n-1&&j!=m-1)
{
if(!a[i][j+1])
{
printf("No\n");
flag2=0;
}
}
else if(i!=n-1&&j==m-1)
{
if(!a[i+1][j])
{
printf("No\n");
flag2=0;
}
}
else
{
if(!a[i][j+1]||!a[i+1][j])
{
printf("No\n");
flag2=0;
}
}
}
}
if(!flag)//第一条不符合beautiful的标准
printf("No\n");
else if(flag2)
printf("Yes\n");
}
return 0;
}
//zoj1016 ac代码:
#include <iostream>
#include<cstdio>
#include<cstring>
#include<string>
using namespace std;
int main()
{
int t,n,i,j,k;
int cp;
int a[25],b[25];
char c[45];
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
a[0]=0;
for(i=1;i<=n;i++)
scanf("%d",&a[i]);
k=0;
for(i=1;i<=n;i++)
{
cp=a[i]-a[i-1];
for(j=1;j<=cp;j++)
c[++k]='(';
c[++k]=')';
}
j=0;
for(i=1;i<=2*n;i++)
{
if(c[i]=='(')
b[++j]=i;
else
{
printf("%d",(i-b[j]+1)/2);
--j;
if(i!=2*n)
printf(" ");
}
}
printf("\n");
}
return 0;
}
//zoj1021
#include <iostream>
#include<cstdio>
#include<stack>
#include<cstring>
using namespace std;
struct pipeShape
{
int x,y;
int height;
}pipe[20];
struct linkShape
{
int left,right;
int y;
}link[50];
int pipeNum,linkNum;
int targetPipe,targetLevel;
void process()
{
int time=0;
int i,j,k;
bool noSolution=false;
stack<int> upSave,pipeSave;
int level=pipe[0].y+pipe[0].height;
int overflow=pipe[0].y;
int up=1;
bool use[20];
memset(use,0,sizeof(use));
use[0]=true;
while(!noSolution)
{
bool pipeFound=false;
for(i=0;i<linkNum;i++)
{
if(link[i].y==level)
{
for(j=0;j<pipeNum;j++)
{
if(use[j])
{
for(k=0;k<pipeNum;k++)
{
if(pipe[j].x==link[i].left&&pipe[k].x==link[i].right||
pipe[j].x==link[i].right&&pipe[k].x==link[i].left)
{
if(!use[k])
{
upSave.push(up);
pipeSave.push(j);
level=pipe[k].y+pipe[k].height;
up=1;
use[k]=true;
if(overflow<pipe[k].y)
overflow=pipe[k].y;
}
else if(!pipeSave.empty()&&(pipeSave.top()==k||pipeSave.top()==j))
{
up=upSave.top();
upSave.pop();
pipeSave.pop();
up++;
}
break;
}
}
if(k<pipeNum) break;
}
}
break;
}
}
if(pipeFound) continue;
if(level<=overflow||targetLevel<=overflow)
{
noSolution=true;
continue;
}
if(use[targetPipe]&&level==targetLevel)
break;
level--;
time+=up;
}
if(noSolution) cout<<"No Solution\n";
else cout<<time<<endl;
}
int main()
{
int kase;
cin>>kase;
while(kase--)
{
int i;
cin>>pipeNum;
for(i=0;i<pipeNum;i++)
cin>>pipe[i].x>>pipe[i].y>>pipe[i].height;
int length;
cin>>linkNum;
for(i=0;i<linkNum;i++)
{
cin>>link[i].left>>link[i].y>>length;
link[i].right=link[i].left+length;
link[i].left--;
}
cin>>targetPipe>>targetLevel;
targetPipe--;
if(targetLevel<pipe[targetPipe].y||targetLevel>pipe[targetPipe].y+pipe[targetPipe].height)
{
cout<<"No Solution\n";
continue;
}
process();
}
return 0;
}