#include using namespace std; #define eb emplace_back int t,n,a,b,g; void solve(){ bool col_rev = 0,row_rev = 0,trans = 0; if(a >= n - a) a = n - a,col_rev = 1; if(b >= n - b) b = n - b,row_rev = 1; if(a < b) swap(a,b),trans = 1; g = gcd(n,a); if((1LL * n * (a - b)) % 4 || (b == 1 && (n / g) % 2)){ cout << -1 << endl; return; } vector> ans(n,vector(n)); if(b == 1){ int r = 0; for(int i = 0; i < g; i++){ for(int j = 0; j < n / g; j += 2){ int p = (i + j * a) % n; for(int k = 1; k <= a; k++){ ans[r][(p + k) % n] = 1; } r += 2; } } } else if(a % 2 == b % 2){ vector w; for(int i = 0; i < a - b + 1; i++) w.eb(1); for(int i = 0; i < n - a - b + 1; i++) w.eb(0); for(int i = 0; i < b - 1; i++){ w.eb(1);w.eb(0); } for(int i = 0; i < n; i += 2){ for(int j = 0; j < n; j++){ ans[i][(i + j) % n] = w[j]; } } } else{ vector w0,w1; w0.eb(1);w0.eb(1);w0.eb(0); for(int i = 0; i < a - b; i++) w0.eb(1); for(int i = 0; i < b - 2; i++){ w0.eb(0);w0.eb(1); } for(int i = 0; i < n - a - b + 1; i++) w0.eb(0); w1.eb(0);w1.eb(1);w1.eb(1);w1.eb(0);w1.eb(0); for(int i = 0; i < a - b; i++) w1.eb(1); for(int i = 0; i < b - 2; i++){ w1.eb(0);w1.eb(1); } for(int i = 0; i < n - a - b - 1; i++) w1.eb(0); for(int i = 0; i < n; i += 2){ vector& w = (i / 2 % 2 == 0 ? w0 : w1); int shift = i / 4 * 4; for(int j = 0; j < n; j++){ ans[i][(j + shift) % n] = w[j]; } } } if(trans){ for(int i = 0; i < n; i++){ for(int j = i + 1; j < n; j++){ swap(ans[i][j],ans[j][i]); } } } if(col_rev){ for(int i = 0; i < n; i += 2){ for(int j = 0; j < n; j++){ ans[i][j] ^= 1; } } } if(row_rev){ for(int i = 0; i < n; i++){ for(int j = 0; j < n; j += 2){ ans[i][j] ^= 1; } } } for(int i = 0; i < n; i++){ for(int j = 0; j < n; j++) cout << ans[i][j]; cout << endl; } } int main(){ cin >> t; while(t--){ cin >> n >> a >> b; solve(); } }