#include <bits/stdc++.h>
using namespace std;
int N,M;
char s[105][105];
int dx[]={-1,0,0,1}; //4个方向的
int dy[]={0,1,-1,0};
void dfs(int x,int y)
{
s[x][y] = ‘#‘;
for(int i=0;i<4;i++)
{
int fx = x+dx[i];
int fy = y+dy[i];
if(s[fx][fy]==‘1‘&& fx>=0 && fy<=M && fx<=N && fy>=0)
{
dfs(fx,fy);
}
}
}
void dfs0(int x,int y)
{
s[x][y] = ‘#‘;
for(int i=0;i<4;i++)
{
int fx = x+dx[i];
int fy = y+dy[i];
if(s[fx][fy]==‘0‘&& fx>=0 && fy<=M && fx<=N && fy>=0)
{
dfs0(fx,fy);
}
}
}
int main ()
{
while (~scanf("%d %d ",&N,&M))
{
for(int i =1; i <=N ; i++)
{
scanf("%s",s[i]+1);
}
M++;N++;
for(int i=0;i<=M;i++)
s[0][i] = ‘0‘;
for(int i=0;i<=N;i++)
s[i][0] =‘0‘;
for(int i=0;i<=N;i++)
s[i][M]=‘0‘;
for(int i=0;i<=M;i++)
s[N][i] =‘0‘;
int sum0=0 ,sum1 = 0;
for(int i=0;i<=N;i++)
{
for(int j=0;j<=M;j++)
{
if(s[i][j]==‘1‘)
{
dfs(i,j);
sum1++;
}
}
}
for(int i=0;i<=N;i++){
for(int j=0;j<=M;j++)
{
if(s[i][j]==‘0‘)
{
dfs0(i,j);
sum0++;
}
}
}
if(sum0 ==1 && sum1 == 1)
cout << 1 <<endl;
else if(sum0 ==2 && sum1 ==1 )
cout << 0<<endl;
else
cout<<-1<<endl;
}
return 0;
}
#include<bits/stdc++.h>
using namespace std;
bool is_run(int y)
{
return ((y%4)==0&& (y%100)!=0 || y%400==0);
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int y,m,d;
scanf("%d-%d-%d",&y,&m,&d);
int sum =0;
while (1){
if(m==2 && d==29)
{
sum = (sum+365*4+is_run(y))%7;
y = y+4;
if(sum==0 && is_run(y)) break;
}
else
{
if(m>2)
{
sum = (sum+365+is_run(y+1))%7;
y++;
if(sum==0) break;
}
else
{
sum = (sum+365+is_run(y))%7;
y++;
if(sum==0) break;
}
}
}
printf("%d\n",y);
}
return 0;
}