description: You are given three integers n, a, b. Determine if there exists a permutation p_1, p_2, …, p_n of integers from 1 to n, such that:
  
    * There are exactly a integers i with 2 ≤ i ≤ n-1 such that p_{i-1} < p_i > p_{i+1} (in other words, there are exactly a local maximums).
  
    * There are exactly b integers i with 2 ≤ i ≤ n-1 such that p_{i-1} > p_i < p_{i+1} (in other words, there are exactly b local minimums).
  
  
  
  
  If such permutations exist, find any such permutation.
  
  Input
  
  The first line of the input contains a single integer t (1 ≤ t ≤ 10^4) — the number of test cases. The description of test cases follows.
  
  The only line of each test case contains three integers n, a and b (2 ≤ n ≤ 10^5, 0 ≤ a,b ≤ n).
  
  The sum of n over all test cases doesn't exceed 10^5.
  
  Output
  
  For each test case, if there is no permutation with the requested properties, output -1.
  
  Otherwise, print the permutation that you are found. If there are several such permutations, you may print any of them.
  
  Example
  
  Input
  
  
  3
  4 1 1
  6 1 2
  6 4 0
  
  
  Output
  
  
  1 3 2 4
  4 2 3 1 5 6
  -1
  
  Note
  
  In the first test case, one example of such permutations is [1, 3, 2, 4]. In it p_1 < p_2 > p_3, and 2 is the only such index, and p_2> p_3 < p_4, and 3 the only such index.
  
  One can show that there is no such permutation for the third test case.
solution: 
  import java.util.*;
  import java.io.*;
  
  public class cf {
      static int M = 1_000_000_007;
      static final PrintWriter out =new PrintWriter(System.out);
      static boolean prime[];
      
      public static void main(String[] args) throws Exception{
          FastIO io = new FastIO();
          int t=io.nextInt();
          while(t-- > 0){
              // ------------------- start --------------------
              
              int n=io.nextInt();
              int a=io.nextInt();
              int b=io.nextInt();
              int make=(n-1)/2;
              int limit = (n-2);
              if(make<a || make<b || (a+b)>(n-2)|| Math.abs(a-b)>1){
                  out.println(-1);
              }else{
                  int arr[] = new int[n];
                  boolean value = a>=b;
                  int l=1,r=n,idx=0;
                  if(value){
                      arr[idx++] = l++;
                  }else{
                      arr[idx++] = r--;
                  }
                  while(a>0 || b>0){
                      if(value){
                          arr[idx++] = r--;
                          a--;
                      }else{
                          arr[idx++] = l++;
                          b--;
                      }
                      value = !value;
                  }
                  if(value){
                      for(int k=l; k<=r; k++){
                          arr[idx++] = k;
                      }
                  }else{
                      for(int k=r; k>=l; k--){
                          arr[idx++] = k;
                      }
                  }
                  
                  for(int i=0; i<n; i++){
                      out.print(arr[i]+" ");
                  }
                  out.println();
              }
              // ------------------- end ----------------------
              out.flush();
          }
          
      }
     
   static class FastIO extends PrintWriter {
  	private InputStream stream;
  	private byte[] buf = new byte[1<<16];
  	private int curChar, numChars;
   
  	// standard input
  	public FastIO() { this(System.in,System.out); }
  	public FastIO(InputStream i, OutputStream o) {
  		super(o);
  		stream = i;
  	}
  	// file input
  	public FastIO(String i, String o) throws IOException {
  		super(new FileWriter(o));
  		stream = new FileInputStream(i);
  	}
   
  	// throws InputMismatchException() if previously detected end of file
  	private int nextByte() {
  		if (numChars == -1) throw new InputMismatchException();
  		if (curChar >= numChars) {
  			curChar = 0;
  			try {
  				numChars = stream.read(buf);
  			} catch (IOException e) {
  				throw new InputMismatchException();
  			}
  			if (numChars == -1) return -1; // end of file
  		}
  		return buf[curChar++];
  	}
   
  	public String nextLine() {
  		int c; do { c = nextByte(); } while (c <= '\n');
  		StringBuilder res = new StringBuilder();
  		do { res.appendCodePoint(c); c = nextByte(); } while (c > '\n');
  		return res.toString();
  	}
   
  	public String next() {
  		int c; do { c = nextByte(); } while (c <= ' ');
  		StringBuilder res = new StringBuilder();
  		do { res.appendCodePoint(c); c = nextByte(); } while (c > ' ');
  		return res.toString();
  	}
   
  	public int nextInt() { 
  		int c; do { c = nextByte(); } while (c <= ' ');
  		int sgn = 1; if (c == '-') { sgn = -1; c = nextByte(); }
  		int res = 0;
  		do {
  			if (c < '0' || c > '9')
  				throw new InputMismatchException();
  			res = 10*res+c-'0';
  			c = nextByte();
  		} while (c > ' ');
  		return res * sgn;
  	}
   
    public long nextLong() { 
  		int c; do { c = nextByte(); } while (c <= ' ');
  		long sgn = 1; if (c == '-') { sgn = -1; c = nextByte(); }
  		long res = 0;
  		do {
  			if (c < '0' || c > '9')
  				throw new InputMismatchException();
  			res = 10*res+c-'0';
  			c = nextByte();
  		} while (c > ' ');
  		return res * sgn;
  	}
   
  	public double nextDouble() { return Double.parseDouble(next()); }
  }
  }
  