#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
#include<math.h>
#include<map>
#include<queue>
using namespace std;
const int maxn=1000+10;
char s[maxn][maxn];
int n,m;
int c[maxn][maxn];
int sum[2*maxn][2*maxn];
int ans[maxn];
int main()
{
int T;
//freopen("F:\in.txt","r",stdin);
scanf("%d",&T);
while(T--){
scanf("%d%d",&n,&m);
memset(sum,0,sizeof sum);
memset(ans,0,sizeof ans);
// memset(c,0,sizeof c);
for(int i=0;i<n;i++) scanf("%s",s[i]);
for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) c[i][j]=s[i-1][j-1]-'0';
for(int i=1;i<=2*n;i++)
for(int j=1;j<=2*n;j++)
{
if(i>n||j>n)sum[i][j]=sum[i-1][j]+sum[i][j-1]-sum[i-1][j-1];
else sum[i][j]=sum[i-1][j]+sum[i][j-1]-sum[i-1][j-1]+c[i][j];
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(c[i][j]==0) continue;
int left,right,mid;
int anslen;
left=1;right=n;
while(left<=right)
{
mid=(left+right)/2;
int s=sum[i+mid-1][j+mid-1]-sum[i+mid-1][j-1]-sum[i-1][j+mid-1]+sum[i-1][j-1];
if(s==mid*mid)
{
anslen=mid;
left=mid+1;
}
else right=mid-1;
}
ans[anslen]++;
}
}
for(int i=n-1;i>=1;i--) ans[i]=ans[i]+ans[i+1];
//for(int i=1;i<=n;i++) printf("%d %d
",i,ans[i]);
for(int i=1;i<=m;i++)
{
int x;
scanf("%d",&x);
printf("%d
",ans[x]);
}
}
return 0;
}