#include<bits/stdc++.h>
using namespace std;
#define debug(n,m) cout<<"["<<#n<<"]->"<<n<<m
#define int long long
#define all(x,off) x.begin()+off,x.end()
#define pb push_back
const int N=1e6+10;
const int inf=9e17;
const int mod=1e9+7;
int n,m;
void solve_sub1() {
vector<vector<char>> ans(n+1,vector<char>(m+1,'-'));
int res=0;
for (int mask=0;mask<(1<<(n*m));++mask) {
vector<int> c(m+1,0);
vector<int> r(n+1,0);
for (int i=0;i<n*m;++i) {
if (mask&(1<<i)) {
++r[i/m+1];
--c[i%m+1];
}
else --r[i/m+1],++c[i%m+1];
}
int cur=0;
for (int i=1;i<=m;++i) if (c[i]>0) ++cur;
for (int i=1;i<=n;++i) if (r[i]>0) ++cur;
if (cur>res) {
res=cur;
for (int i=0;i<n*m;++i) {
if (mask&(1<<i)) {
ans[i/m+1][i%m+1]='+';
}
}
}
}
cout<<res<<'\n';
for (int i=1;i<=n;++i) {
for (int j=1;j<=m;++j) {
cout<<ans[i][j];
}
cout<<'\n';
}
}
void solve_sub2() {
if (n>m) {
if (m<=2) {
cout<<n<<'\n';
for (int i=1;i<=n;++i) {
cout<<string(m,'+')<<'\n';
}
}
else {
cout<<n+1<<'\n';
for (int i=1;i<=n;++i) {
cout<<"++-\n";
}
}
}
else {
if (n<=2) {
cout<<m<<'\n';
cout<<string(m,'-')<<'\n';
if (n==2)cout<<string(m,'-')<<'\n';
}
else {
cout<<m+1<<'\n';
cout<<string(m,'-')<<'\n';
cout<<string(m,'+')<<'\n';
cout<<string(m,'-')<<'\n';
}
}
}
void levi() {
cin>>n>>m;
if (n*m<=16) solve_sub1();
if (min(n,m)<=3) solve_sub2();
}
int32_t main() {
ios_base::sync_with_stdio(0);
cin.tie(0);int tt=1;cin>>tt;
while (tt--) levi();
}
/*
*/