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.io.*;
  import java.util.StringTokenizer;
  
  public class B {
      public static void main(String[] args) throws IOException {
          Scanner sc = new Scanner(System.in);
          PrintWriter pw = new PrintWriter(System.out);
  
          int t = sc.nextInt();
  
          while(t-->0){
              int n = sc.nextInt();
              int a = sc.nextInt();
              int b = sc.nextInt();
  
              if(Math.abs(a-b)>1){
                  pw.println(-1);
                  continue;
              }
              if(n-2<a+b){
                  pw.println(-1);
                  continue;
              }
              StringBuilder sb= new StringBuilder();
              int start=1;
              int end =n;
              if(a==b&&b==0){
                  for(int i =0;i<n;i++){
                      sb.append((i+1)+" ");
                  }
              }
              else if(a==b){
  
                  while(a>0){
                      sb.append(start+" ");   // 1 6 2 5 3 4  // 1 6 2 5 4 3
                      start++;
                      sb.append(end+" ");
                      end--;
                      a--;
                  }
                  while(start<=end){
                      sb.append(start+" ");
                      start++;
                  }
  //                while(start<end){
  //                    sb.append(start+" ");
  //                    sb.append(end+" ");
  //                    start++;
  //                    end--;
  //                }
  //                if(start==end){
  //                    sb.append(start);
  //                }
              }
              else if(a>b){ // we want tha maxima to be greater
                  while(a>0){
                      sb.append(start+" ");   // 1 6 2 5 3 4  // 1 6 2 5 4 3
                      start++;
                      sb.append(end+" ");
                      end--;
                      a--;
                  }
                  while(end>=start){
                      sb.append(end+" ");
                      end--;
                  }
  //                while(start<Math.ceil((n*1.0)/(2*1.0))){
  //                    sb.append(start+" ");
  //                    start++;
  //                }
  
  
              }else{
                  while(b>0){
                      sb.append(end+" ");   // 1 6 2 5
                      end--;
                      sb.append(start+" ");
                      start++;
                      b--;
                  }
                  while(start<=end){
                      sb.append(start+" ");
                      start++;
                  }
  //                while(end>Math.ceil((n*1.0)/(2*1.0))){
  //                    sb.append(end+" ");
  //                    end--;
  //                }
  
  
  
              }
              pw.println(sb.toString());
          }
          pw.close();
      }
      static class Scanner {
          StringTokenizer st;
          BufferedReader br;
  
          public Scanner(InputStream s) {
              br = new BufferedReader(new InputStreamReader(s));
          }
  
          public Scanner(FileReader r) {
              br = new BufferedReader(r);
          }
  
          public String next() throws IOException {
              while (st == null || !st.hasMoreTokens())
                  st = new StringTokenizer(br.readLine());
              return st.nextToken();
          }
  
          public int nextInt() throws IOException {
              return Integer.parseInt(next());
          }
  
          public long nextLong() throws IOException {
              return Long.parseLong(next());
          }
  
          public String nextLine() throws IOException {
              return br.readLine();
          }
  
          public double nextDouble() throws IOException {
              String x = next();
              StringBuilder sb = new StringBuilder("0");
              double res = 0, f = 1;
              boolean dec = false, neg = false;
              int start = 0;
              if (x.charAt(0) == '-') {
                  neg = true;
                  start++;
              }
              for (int i = start; i < x.length(); i++)
                  if (x.charAt(i) == '.') {
                      res = Long.parseLong(sb.toString());
                      sb = new StringBuilder("0");
                      dec = true;
                  } else {
                      sb.append(x.charAt(i));
                      if (dec)
                          f *= 10;
                  }
              res += Long.parseLong(sb.toString()) / f;
              return res * (neg ? -1 : 1);
          }
  
          public long[] nextlongArray(int n) throws IOException {
              long[] a = new long[n];
              for (int i = 0; i < n; i++)
                  a[i] = nextLong();
              return a;
          }
  
          public Long[] nextLongArray(int n) throws IOException {
              Long[] a = new Long[n];
              for (int i = 0; i < n; i++)
                  a[i] = nextLong();
              return a;
          }
  
          public int[] nextIntArray(int n) throws IOException {
              int[] a = new int[n];
              for (int i = 0; i < n; i++)
                  a[i] = nextInt();
              return a;
          }
  
          public Integer[] nextIntegerArray(int n) throws IOException {
              Integer[] a = new Integer[n];
              for (int i = 0; i < n; i++)
                  a[i] = nextInt();
              return a;
          }
  
          public boolean ready() throws IOException {
              return br.ready();
          }
      }
  }
  