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.File;import java.io.FileInputStream;import java.io.FileNotFoundException;
  import java.io.IOException;import java.io.InputStream;import java.io.PrintWriter;
  import java.security.AccessControlException;import java.util.List;import java.util.stream.IntStream;
  public class _B {static public void main(final String[] args) throws IOException
  {B._main(args);}
  static class B extends Solver{public B(){}static class Node{int value=0;Node prev
  =null,next=null;}@Override public void solve()throws IOException{int n=sc.nextInt();int a
  =sc.nextInt();int b=sc.nextInt();sc.nextLine();Node res=null;if(Math.abs(a-b)<2 
  && a+b+2<=n){int[]ints=IntStream.rangeClosed(1,n).toArray();int min=0;int max=ints.length
  -1;Node tail=null;int hi=Math.max(a,b);for(int i=0;i<hi;i++){Node node=new Node();
  node.value=ints[a>=b?max:min];if(res==null){res=node;tail=node;}else{tail.next=node;
  node.prev=tail;tail=node;}if(a>=b){max--;}else{min++;}if(i<hi-1 || a==b){Node node1
  =new Node();node1.value=ints[a>=b?min:max];node1.prev=node;node.next=node1;tail=
  node1;if(a>=b){min++;}else{max--;}}}Node node2=new Node();node2.value=ints[max--];
  if(res==null){res=node2;tail=node2;}else{node2.next=res;res.prev=node2;res=node2;
  }node2=new Node();node2.value=ints[min++];tail.next=node2;node2.prev=tail;tail=node2;
  while(max>=min){node2=new Node();node2.value=ints[min];for(Node p=res;p.next!=null;
  p=p.next){if(p.value<node2.value && p.next.value>node2.value || p.value>node2.value 
  && p.next.value<node2.value){node2.prev=p;node2.next=p.next;p.next=node2;break;}
  }min++;}}if(res==null){pw.println(-1);}else{for(Node p=res;p!=null;p=p.next){pw.print(p.value
  +" ");}pw.println();}}static public void _main(String[]args)throws IOException{new 
  B().run();}}static class MyScanner{private StringBuilder cache=new StringBuilder();
  int cache_pos=0;private int first_linebreak=-1;private int second_linebreak=-1;private 
  StringBuilder sb=new StringBuilder();private InputStream is=null;public MyScanner(final 
  InputStream is){this.is=is;}public String charToString(final int c){return String.format("'%s'",
  c=='\n'?"\\n":(c=='\r'?"\\r":String.valueOf((char)c)));}public int get(){int res
  =-1;if(cache_pos<cache.length()){res=cache.charAt(cache_pos);cache_pos++;if(cache_pos
  ==cache.length()){cache.delete(0,cache_pos);cache_pos=0;}}else{try{res=is.read();
  }catch(IOException ex){throw new RuntimeException(ex);}}return res;}private void 
  unget(final int c){if(cache_pos==0){cache.insert(0,(char)c);}else{cache_pos--;}}
  public String nextLine(){sb.delete(0,sb.length());int c;boolean done=false;boolean 
  end=false;while((c=get())!=-1){if(check_linebreak(c)){done=true;if(c==first_linebreak)
  {if(!end){end=true;}else{cache.append((char)c);break;}}else if(second_linebreak!=
  -1 && c==second_linebreak){break;}}if(end && c!=first_linebreak && c!=second_linebreak)
  {cache.append((char)c);break;}if(!done){sb.append((char)c);}}return!done && sb.length()
  ==0?null:sb.toString();}private boolean check_linebreak(int c){if(c=='\n'|| c=='\r')
  {if(first_linebreak==-1){first_linebreak=c;}else if(c!=first_linebreak && second_linebreak
  ==-1){second_linebreak=c;}return true;}return false;}public int nextInt(){return 
  Integer.parseInt(next());}public long nextLong(){return Long.parseLong(next());}
  public boolean hasNext(){boolean res=false;int c;while((c=get())!=-1){if(!check_linebreak(c)
  && c!=' '&& c!='\t'){res=true;unget(c);break;}}return res;}public String next(){
  sb.delete(0,sb.length());boolean started=false;int c;while((c=get())!=-1){if(check_linebreak(c)
  || c==' '|| c=='\t'){if(started){unget(c);break;}}else{started=true;sb.append((char)c);
  }}return sb.toString();}public int nextChar(){return get();}public boolean eof()
  {int c=get();boolean res=false;if(c!=-1){unget(c);}else{res=true;}return res;}public 
  double nextDouble(){return Double.parseDouble(next());}}static abstract class Solver
  {protected String nameIn=null;protected String nameOut=null;protected boolean singleTest
  =false;protected MyScanner sc=null;protected PrintWriter pw=null;private int current_test
  =0;private int count_tests=0;protected int currentTest(){return current_test;}protected 
  int countTests(){return count_tests;}private void process()throws IOException{if(!singleTest)
  {count_tests=sc.nextInt();sc.nextLine();for(current_test=1;current_test<=count_tests;
  current_test++){solve();pw.flush();}}else{count_tests=1;current_test=1;solve();}
  }abstract protected void solve()throws IOException;public void run()throws IOException
  {boolean done=false;try{if(nameIn!=null){if(new File(nameIn).exists()){try(FileInputStream 
  fis=new FileInputStream(nameIn);PrintWriter pw0=select_output();){select_output();
  done=true;sc=new MyScanner(fis);pw=pw0;process();}}else{throw new RuntimeException("File "
  +new File(nameIn).getAbsolutePath()+" does not exist!");}}}catch(IOException | AccessControlException 
  ex){}if(!done){try(PrintWriter pw0=select_output();){sc=new MyScanner(System.in);
  pw=pw0;process();}}}private PrintWriter select_output()throws FileNotFoundException
  {if(nameOut!=null){return new PrintWriter(nameOut);}return new PrintWriter(System.out);
  }}static abstract class Tester{static public int getRandomInt(final int min,final 
  int max){return(min+(int)Math.floor(Math.random()*(max-min+1)));}static public long 
  getRandomLong(final long min,final long max){return(min+(long)Math.floor(Math.random()
  *(max-min+1)));}static public double getRandomDouble(final double min,final double 
  maxExclusive){return(min+Math.random()*(maxExclusive-min));}abstract protected void 
  testOutput(final List<String>output_data);abstract protected void generateInput();
  abstract protected String inputDataToString();private boolean break_tester=false;
  protected void beforeTesting(){}protected void breakTester(){break_tester=true;}
  public boolean broken(){return break_tester;}}}
  