#include<iostream>
using namespace std;
int n,m,k;
char s[20][20];
int t;
bool vis[20][20];
bool solve(int i,int j){
int ss=1;
while(s[i-ss][j-ss]=='*'&&s[i-ss][j+ss]=='*'&&i-ss>=1&&j-ss>=1&&j+ss<=m){
ss++;
}
if(ss>k){
vis[i][j]=1;
for(int z=1;z<ss;z++) vis[i-z][j-z]=1,vis[i-z][j+z]=1;
}
}
int main(){
cin>>t;
while(t--){
bool flag=true;
cin>>n>>m>>k;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>s[i][j];
vis[i][j]=false;
}
}
for(int i=n;i>=1;i--){
for(int j=m;j>=1;j--){
if(s[i][j]=='*'){
solve(i,j);
}
}
}
for(int i=1;i<=n&&flag;i++){
for(int j=1;j<=m&&flag;j++){
if(s[i][j]=='*'&&vis[i][j]==0){
flag=false;
}
}
}
if(flag) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
}
逆序遍历每个点,满足条件则打上标记
如果满足条件,则最终图中每个点都应该被打上标记