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.*;
  public class s{
      static boolean flag;
      public static void max(int n, int a, int b, int ans[]){
          boolean ar[]= new boolean[n+1];
          int l = n;
          int c=0;
          for (int i =2;i<=n-1;i+=2){
              ans[i]= l;
              ar[l]= true;
              l--;
              c++;
              if (c==a) break;
          }
          if (c!=a) {
              flag = false;
              return;
          }
          l = n;
          int nn = c-1;
          if (b>c && b<(c-1)){
              flag = false;
              return;
          }
          if (b==c){
             if (ans[n-1]==0){
                 ans[n-1]=1;
                 ar[1]= true;
             }
             else{
                 flag = false;
                 return;
             }
          }
         Stack<Integer> st = new Stack<>();
         for (int i =1;i<=n;i++){
             if (!ar[i]) st.push(i);
         }
         for (int i=1;i<=n;i++){
             if (ans[i]==0) ans[i]=st.pop();
         }
      }
      public static void mn(int n, int a, int b, int ans[]){
          boolean ar[]= new boolean[n+1];
          int l = 1;
          int c=0;
          for (int i =2;i<=n-1;i+=2){
              ans[i]= l;
              ar[l]= true;
              l++;
              c++;
              if (c==a) break;
          }
          if (c!=a) {
              flag = false;
              return;
          }
          l = n;
          int nn = c-1;
          if (b>c && b<(c-1)){
              flag = false;
              return;
          }
          if (b==c){
             if (ans[n-1]==0){
                 ans[n-1]=n;
                 ar[n]= true;
             }
             else{
                 flag = false;
                 return;
             }
          }
         Stack<Integer> st = new Stack<>();
         for (int i =n;i>=1;i--){
             if (!ar[i]) st.push(i);
         }
         for (int i=1;i<=n;i++){
             if (ans[i]==0) ans[i]=st.pop();
         }
          
      }
      public static void main (String [] args) throws IOException{
          BufferedReader br = new BufferedReader (new InputStreamReader (System.in));
          int t = Integer.parseInt(br.readLine());
          while (t-->0){
              StringTokenizer st = new StringTokenizer(br.readLine());
              int n = Integer.parseInt(st.nextToken());
              int a = Integer.parseInt(st.nextToken());
              int b = Integer.parseInt(st.nextToken());
              flag = true;
              if ((int)Math.abs(a-b)>1) {
                  System.out.println (-1);
                  continue;
              }
               int ans[]= new int[n+1];
              if (a==0 && b==0){
                  for (int i=1;i<=n;i++){
                      System.out.print (i+" ");
                  }
                  System.out.println ();
                  continue;
              }
              else if (a>=b){
                 
                  max (n,a,b,ans);
              }
              else{
                 mn (n,b,a,ans); 
              }
              if (flag == false) {
                  System.out.println (-1);
                  continue;
              }
              for (int i=1;i<=n;i++){
                  System.out.print (ans[i]+" ");
              }
              System.out.println ();
          }
      }
  }