#include <bits/stdc++.h>
using namespace std;
#define MAXN 1001
int t,n,m,answer;
char a[MAXN][MAXN];
int main()
{
cin>>t;
for (int test=0;test<t;test++)
{
cin>>n>>m;
if (n==m)
{
if (n==1) {cout<<1<<endl;cout<<'+'<<endl;continue;}
if (n==2) {cout<<2<<endl;cout<<"++"<<endl;cout<<"++"<<endl;continue;}
if (n==4) {cout<<5<<endl;cout<<"++++"<<endl;cout<<"----"<<endl;cout<<"----"<<endl;cout<<"----"<<endl;continue;}
if (n==6)
{
cout<<9<<endl;
cout<<"-++-++"<<endl;cout<<"+-++-+"<<endl;cout<<"++-++-"<<endl;
cout<<"------"<<endl;cout<<"------"<<endl;cout<<"------"<<endl;
continue;
}
for (int row=1;row<=n;row++)
{
for (int col=1;col<=m;col++) a[row][col]='+';
}
if (n%2==1)
{
int potrebno=n/2+1,curn=n;answer=n+m-2;
for (int col=1;col<=m;col++) a[n-1][col]=a[n][col]='-';
potrebno-=2;curn-=2;int curr=1;
for (int col=1;col<=m;col++)
{
int number=0;
while (number<potrebno)
{
a[curr][col]='-';number++;curr++;
if (curr==curn+1) curr=1;
}
}
}
else
{
int potrebno=n/2+1,curn=n,curm=m;answer=n+m-4;
for (int col=1;col<=m;col++) a[n-2][col]=a[n-1][col]=a[n][col]='-';
potrebno-=3;curn-=3;curm--;int curr=1;
for (int col=1;col<=curm;col++)
{
int number=0;
while (number<potrebno)
{
a[curr][col]='-';number++;curr++;
if (curr==curn+1) curr=1;
}
}
}
cout<<answer<<endl;
for (int row=1;row<=n;row++)
{
for (int col=1;col<=m;col++) cout<<a[row][col];
cout<<endl;
}
}
}
}