#include<bits/stdc++.h>
#define ll long long
using namespace std;
char arr[510][510];
ll jilu[510][510];
void solve()
{
int n,m;
cin>>n>>m;
memset(jilu,0,sizeof jilu);
for(int i=1;i<=n;i++)
cin>>arr[i]+1;
for(int i=1;i<=n;i++)
{
int flag=0,cnt=1;
for(int j=1;j<=m;j++)
{
if(flag==0&&arr[i][j]=='*')
{
flag=1;
jilu[i][j]=++cnt;
}
else if(arr[i][j]=='*')
{
jilu[i][j]=cnt;
}
else
flag=0;
}
}
ll ans=0;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
if(arr[i][j]=='*')
{
for(int k=1;k<=n;k++)
{
if(i+k>n)
{
ans+=k;
break;
}
if(j-k<0||j+k>m)
{
ans+=k;
break;
}
if(jilu[i+k][j-k]!=0&&jilu[i+k][j+k]!=0&&jilu[i+k][j+k]==jilu[i+k][j-k])
continue;
else
{
ans+=k;
break;
}
}
}
}
}
cout<<ans<<'\n';
}
int main()
{
int t;
cin>>t;
while(t--)solve();
}
1633C - Kill the Monster | 1611A - Make Even |
1030B - Vasya and Cornfield | 1631A - Min Max Swap |
1296B - Food Buying | 133A - HQ9+ |
1650D - Twist the Permutation | 1209A - Paint the Numbers |
1234A - Equalize Prices Again | 1613A - Long Comparison |
1624B - Make AP | 660B - Seating On Bus |
405A - Gravity Flip | 499B - Lecture |
709A - Juicer | 1358C - Celex Update |
1466B - Last minute enhancements | 450B - Jzzhu and Sequences |
1582C - Grandma Capa Knits a Scarf | 492A - Vanya and Cubes |
217A - Ice Skating | 270A - Fancy Fence |
181A - Series of Crimes | 1638A - Reverse |
1654C - Alice and the Cake | 369A - Valera and Plates |
1626A - Equidistant Letters | 977D - Divide by three multiply by two |
1654B - Prefix Removals | 1654A - Maximum Cake Tastiness |