description: You are given two integers l and r, l≤ r. Find the largest possible value of a mod b over all pairs (a, b) of integers for which r≥ a ≥ b ≥ l.
  
  As a reminder, a mod b is a remainder we get when dividing a by b. For example, 26 mod 8 = 2.
  
  Input
  
  Each test contains multiple test cases.
  
  The first line contains one positive integer t (1≤ t≤ 10^4), denoting the number of test cases. Description of the test cases follows.
  
  The only line of each test case contains two integers l, r (1≤ l ≤ r ≤ 10^9).
  
  Output
  
  For every test case, output the largest possible value of a mod b over all pairs (a, b) of integers for which r≥ a ≥ b ≥ l.
  
  Example
  
  Input
  
  
  4
  1 1
  999999999 1000000000
  8 26
  1 999999999
  
  
  Output
  
  
  0
  1
  12
  499999999
  
  Note
  
  In the first test case, the only allowed pair is (a, b) = (1, 1), for which a mod b = 1 mod 1 = 0.
  
  In the second test case, the optimal choice is pair (a, b) = (1000000000, 999999999), for which a mod b = 1.
solution: import java.io.*;
  import java.util.StringTokenizer;
  
  public class CF_1562a{
      public static final void main(String[] args){
          Kattio io= new Kattio();
          int t= io.getInt();
          while(t-->0){
              int l= io.getInt(), r= io.getInt();
              int max= 0;
              if(r>l){
                  int m= 1+r/2;
                  max= m>l ? r%m : r%l;
              } 
              io.println(max);
          }
          io.close();
      }
  
      static void err(String format, Object... args){
          System.err.println(String.format(format, args));
      }    
      static class Kattio extends PrintWriter {
          private BufferedReader r;
          private String line, token;
          private StringTokenizer st;
      
          public Kattio(){this(System.in);}
          public Kattio(InputStream i){
          super(new BufferedOutputStream(System.out));
              r= new BufferedReader(new InputStreamReader(i));
          }
          public Kattio(InputStream i, OutputStream o){
          super(new BufferedOutputStream(o));
              r= new BufferedReader(new InputStreamReader(i));
          }
          public boolean isLineEnd(){
              return !st.hasMoreTokens();
          }
          public boolean hasMoreTokens(){
              return peekToken()!=null;
          }
          public int getInt(){
              return Integer.parseInt(nextToken());
          }
          public double getDouble(){ 
              return Double.parseDouble(nextToken());
          }
          public long getLong(){
              return Long.parseLong(nextToken());
          }
          public String getWord(){
              return nextToken();
          }
          private String peekToken(){
              if(token==null) try {
                  while(st==null || !st.hasMoreTokens()) {
                      line= r.readLine();
                      if(line==null) return null;
                      st= new StringTokenizer(line);
                  }
                  token= st.nextToken();
              }catch(IOException e){}
              return token;
          }
          private String nextToken() {
              String ans= peekToken();
              token= null;
              return ans;
          }
      }    
  }