#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_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 solve_sub3() {
if (m>=n) {
if (n==4) {
cout<<m+1<<'\n';
cout<<string(m,'-')<<'\n';
cout<<string(m,'-')<<'\n';
cout<<string(m,'-')<<'\n';
cout<<string(m,'+')<<'\n';
}
else {
if (m&1) {
cout<<m+n-2<<'\n';
cout<<string(m,'-')<<'\n';
cout<<string(m/2,'-')<<"+"<<string(m/2,'+')<<'\n';
cout<<string(m/2,'-')<<"+"<<string(m/2,'+')<<'\n';
cout<<string(m/2,'+')<<"+"<<string(m/2,'-')<<'\n';
cout<<string(m/2,'+')<<"+"<<string(m/2,'-')<<'\n';
return;
}
cout<<m+2<<'\n';
cout<<string(m,'-')<<'\n';
cout<<string(m,'-')<<'\n';
cout<<string(m,'-')<<'\n';
cout<<string(m,'+')<<'\n';
cout<<string(m,'+')<<'\n';
}
}
else {
if (m==4) {
cout<<n+1<<'\n';
for (int i=1;i<=n;++i) {
cout<<"+++-"<<'\n';
}
}
else {
if (n&1) {
cout<<n+m-2<<'\n';
for (int i=1;i<=n/2;++i) {
cout<<"+++--"<<'\n';
}
cout<<"--+--"<<'\n';
for (int i=1;i<=n/2;++i) {
cout<<"--+++"<<'\n';
}
}
else {
cout<<n+2<<'\n';
for (int i=1;i<=n;++i) {
cout<<"+++--"<<'\n';
}
}
}
}
}
void levi() {
cin>>n>>m;
//if (n*m<=16) solve_sub1();
if (min(n,m)<=3)solve_sub2();
else if (min(n,m)<=5)solve_sub3();
}
int32_t main() {
ios_base::sync_with_stdio(0);
cin.tie(0);int tt=1;cin>>tt;
while (tt--) levi();
}
/*
*/