从高到低逐位减一并将后续位改为9得到数字(用stoll处理去前导0),并将其反转得到若干数字取其中最大(包括原r的反转值),附加条件判断是否在l与r之间 
#include <bits/stdc++.h>
using namespace std;
int main(){
    int t;
    cin>>t;
    while(t--){
        string l,r;
        cin>>l>>r;
        string k=r;
        reverse(k.begin(),k.end());
        long long f=stoll(k);
        for(int i=0;i<r.length();i++){
           if(r[i]-'0'>=1){
               string q=r;
               q[i]=q[i]-1;
               for(int j=i+1;j<q.length();j++){
                   q[j]='9';
               }
                 long long q1=stoll(q);
               if(q1<=stoll(r)&&q1>=stoll(l)){
                 q=to_string(q1);
               reverse(q.begin(),q.end());
               long long n=stoll(q);
                   f=max(f,n);
               }
           }
        }
        cout<<f<<endl;
    }
}