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.lang.reflect.Array;
  import java.util.*;
  public class Pentagram {
  
      public static void main(String[] args) throws IOException {
          Scanner sc = new Scanner(System.in);
          PrintWriter pw = new PrintWriter(System.out);
          int tc = sc.nextInt();
          while(tc-->0){
              int n = sc.nextInt(), a = sc.nextInt(), b = sc.nextInt();
              int[] arr = new int[n]; for(int i = 1; i<=n; i++)arr[i - 1] = i;
               if((Math.abs(a - b) > 1) || (n == 2 && (a > 0 || b > 0)) || (a + b > n - 2)){
                  pw.println(-1);
              }else if(a == b){
                  ArrayList<Integer> ans = new ArrayList<>();
                  ans.add(1);
                  int i = 2, j = n;
                  int idx = 1;
                  int temp = 0;
                  while(temp < a){
                      ans.add(j);
                      j--;
                      ans.add(i);
                      i++;
                      temp++;
                  }
                  //System.out.println(Arrays.toString(ans));
                  for(int k = i; k<=j;k++){
                      ans.add(k);
                  }
  
                  for(int x: ans)pw.print(x + " ");
                  pw.println();
              }else if(a > b){
                  int cnta = 0;
                  ArrayList<Integer> ans = new ArrayList<>();
                  ans.add(1);
                  int i = 2, j = n;
                  int idx = 1;
                  while(cnta < a - 1){
                      ans.add(j);
                      j--;
                      ans.add(i);
                      i++;
                      cnta++;
                  }
                  for(int k = j; k>=i; k--)ans.add(k);
                  for(int x: ans)pw.print(x + " ");
                  pw.println();
              }else{
                  ArrayList<Integer> ans = new ArrayList<>();
                  ans.add(n);
                  int i = 1, j = n - 1;
                  int cntb = 0;
                  while(cntb < b - 1){
                      ans.add(i);
                      i++;
                      ans.add(j);
                      j--;
                      cntb++;
                  }
                  for(int k = i; k<=j; k++)ans.add(k);
                  for(int x: ans)pw.print(x + " ");
                  pw.println();
              }
          }
          pw.flush();
          /*
          if(a >= b){
                  for(int i = 1; i<n; i+=2){
                      int temp = arr[i];
                      arr[i] = arr[i + 1];
                      arr[i + 1] = temp;
                  }
                  boolean f = true;
                  int cnta = 0, cntb = 0;
                  for(int i = 1; i<n-1; i++){
                      if(arr[i] > arr[i - 1] && arr[i] > arr[i + 1])cnta++;
                      else if(arr[i] < arr[i - 1] && arr[i] < arr[i + 1])cntb++;
                  }
                  if(a == cnta && b == cntb){
                      for(int x: arr)pw.print(x + " ");
                      pw.println();
                  }else pw.println(-1);
              }
           */
  
      }
      static class Pair implements Comparable<Pair>{
          long x;
          long y;
          public Pair(long x, long y){
              this.x = x;
              this.y = y;
          }
          public int compareTo(Pair p){
              if(x > p.x)return 1;
              if(x < p.x)return -1;
              if(y > p.y) return -1;
              if(y < p.y) return 1;
              return 0;
          }
          public String toString(){
              return "(" + x + "," + y + ")";
          }
      }
      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();
          }
  
      }
  }
  