#include<iostream>
using namespace std;
int a[10][10];
int b[10][10];
int judge (int len, int n)
{
int sum = 0, num = n/len;
for (int i = 1; i < num+1; i++)
for (int j = 1; j < num+1; j++)
{
int k;
bool ok = true;
for (k = j; k < j+num; k++)
if (!H[i][k] && !H[i+num][k])
{
ok = false;
break;
}
for (k = i; k < i+num; k++)
if (!V[k][j] && !V[k][j+num])
{
ok = false;
break;
}
if (ok)
sum++;
}
return sum;
}
int main(){
int n,m,kase = 1;
while(scanf("%d%d",&n,&m)!=EOF){
int i,j,k;
char c;
memset(H, 0, sizeof(H));
memset(V, 0, sizeof(V));
for (k = 0; k < m; k++){
scanf("%d%d%d",&c,&i,&j);
if(c == 'H')
H[i][j] = 1;
else if(c == 'V')
V[i][j] =1;
else
continue;
}
if (kase-1)
printf("\n**********************************\n\n");
cout << "Problem #" << kase++ << endl << endl;
int len = 1,cnt = 0;
while (len < n){
if (judge(len, n))
{
cnt++;
cout << judge(len, n) << " square (s) of size " << len << endl;
}
len++;
}
if (!cnt)
cout << "No completed squares can be found.\n";
}
return 0;
}
using namespace std;
int a[10][10];
int b[10][10];
int judge (int len, int n)
{
int sum = 0, num = n/len;
for (int i = 1; i < num+1; i++)
for (int j = 1; j < num+1; j++)
{
int k;
bool ok = true;
for (k = j; k < j+num; k++)
if (!H[i][k] && !H[i+num][k])
{
ok = false;
break;
}
for (k = i; k < i+num; k++)
if (!V[k][j] && !V[k][j+num])
{
ok = false;
break;
}
if (ok)
sum++;
}
return sum;
}
int main(){
int n,m,kase = 1;
while(scanf("%d%d",&n,&m)!=EOF){
int i,j,k;
char c;
memset(H, 0, sizeof(H));
memset(V, 0, sizeof(V));
for (k = 0; k < m; k++){
scanf("%d%d%d",&c,&i,&j);
if(c == 'H')
H[i][j] = 1;
else if(c == 'V')
V[i][j] =1;
else
continue;
}
if (kase-1)
printf("\n**********************************\n\n");
cout << "Problem #" << kase++ << endl << endl;
int len = 1,cnt = 0;
while (len < n){
if (judge(len, n))
{
cnt++;
cout << judge(len, n) << " square (s) of size " << len << endl;
}
len++;
}
if (!cnt)
cout << "No completed squares can be found.\n";
}
return 0;
}