#include #define lli long long using namespace std; lli square_root(lli x) { lli sqrtx = (lli)sqrt(x); if ( sqrtx*sqrtx == x ) return sqrtx; else if ( (sqrtx - 1)*(sqrtx - 1) == x ) return sqrtx - 1; else if ( (sqrtx + 1)*(sqrtx + 1) == x ) return sqrtx + 1; else return -1; } int main() { int t, n, sum_tc = 0; lli even, odd, odd_prefix_sums, even_prefix_sums, tot_sub_arrays; cin >> t; assert(t >= 1 && t <= 10); while ( t-- ) { cin >> n >> even >> odd; sum_tc += n; assert(sum_tc >= 1 && sum_tc <= 1000000); assert(n >= 1 && n <= 1000000); tot_sub_arrays = ((lli)n*(lli)(n + 1LL))/2; assert(even >= 0 && even <= tot_sub_arrays); assert(odd >= 0 && odd <= tot_sub_arrays); assert(odd + even == tot_sub_arrays); lli discriminant = (lli)n*(lli)n + 2LL*(lli)n + 1LL - 4LL*(lli)odd; lli sqrt_discriminant = square_root(discriminant); if ( sqrt_discriminant == -1 ) { puts("-1"); continue; } lli num1 = n + 1 + sqrt_discriminant; if ( num1%2 == 0 ) { even_prefix_sums = num1/2; odd_prefix_sums = n + 1 - even_prefix_sums; } else { num1 = n + 1 - sqrt_discriminant; if ( num1%2 == 0 ) { even_prefix_sums = num1/2; odd_prefix_sums = n + 1 - even_prefix_sums; } else { puts("-1"); continue; } } for ( int i = 1; i < even_prefix_sums; i++ ) cout << "0 "; if ( odd_prefix_sums ) cout << "1 "; for ( int i = 0; i < odd_prefix_sums - 1; i++ ) cout << "0 "; cout << endl; } return 0; }