#include<bits/stdc++.h>
using namespace std;
#define endl "\n"
#define out(x) #x <<" = "<<x<<"; "
const long long MAX = 1e3 + 10;
int t;
char a[MAX][MAX];
int cnt[MAX];
int n, m;
int main(){
/*ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);*/
cin>>t;
while(t --){
cin>>n>>m;
int anss = 0, nn = 0, mm = 0;
for(int i = 0; i <= n; i++){
//cout<<"Processing "<<out(i)<<endl;
int l = 1, r = m, mid, ans = 0;
while(l <= r){
mid = (l + r)/2;
int curr = i * (m/2 + 1 - m + mid);
bool ok = false;
if(curr <= 0) ok = true;
//cout<<out(l)<<out(r)<<out(mid)<<out(curr);
if(curr % mid != 0) curr = curr/ mid + 1;
else curr /= mid;
//cout<<out(curr)<<endl;
if(curr < n/2 + n % 2 || ok){
l = mid + 1;
ans = mid;
}else r = mid -1;
}
if(ans + i > anss){
anss = ans + i;
nn = i;
mm = ans;
}
}
cout<<anss<<endl;
//cout<<out(nn)<<out(mm)<<endl;
for(int i = 1; i <= n; i++){
for(int j = 1; j <= m; j++){
cnt[j] = 0;
a[i][j] = '-';
}
}
int br = nn * (m/2 + 1);
for(int i = 1; i <= nn; i++){
for(int j = 1; j <= m - mm; j++){
if(br > 0){
a[i][j] = '+';
br--;
}
}
}
for(int i = 1; i <= nn; i++){
int brrr = m - mm;
for(int j = m - mm + 1; j <= m; j++){
if(brrr >= m/2 + 1) break;
if(br > 0 && cnt[j] < n/2 + n%2){
a[i][j] = '+';
br--;
cnt[j] ++;
brrr ++;
}
//cout<<a[i][j];
}
//cout<<endl;
}
for(int i = 1; i <= n; i++){
for(int j = 1; j <= m; j++){
//if(br > 0) a[i][j] = '+';
cout<<a[i][j];
}
cout<<endl;
}
}
return 0;
}