#include #define debug(x) cerr<<#x<<" = "< #define mp make_pair #define pb push_back using namespace std; namespace IO{ const int BS=(1<<23)+5; int Top=0; char Buffer[BS],OT[BS],*OS=OT,*HD,*TL,SS[20]; const char *fin=OT+BS-1; char Getchar(){if(HD==TL){TL=(HD=Buffer)+fread(Buffer,1,BS,stdin);} return (HD==TL)?EOF:*HD++;} void flush(){fwrite(OT,1,OS-OT,stdout),OS=OT;} void Putchar(char c){*OS++ =c;if(OS==fin)flush();} void write(int x){ if(!x){Putchar('0');return;} if(x<0) x=-x,Putchar('-'); while(x) SS[++Top]=x%10,x/=10; while(Top) Putchar(SS[Top]+'0'),--Top; } inline int read(){ int nm=0; bool fh=1; char cw=getchar(); for(;!isdigit(cw);cw=getchar()) fh^=(cw=='-'); for(;isdigit(cw);cw=getchar()) nm=nm*10+(cw-'0'); return fh?nm:-nm; } } using namespace IO; #define M 1002 #define INF 1000000005 int n,m,ans,F[M][4],c[M][4],A[M],cod[M],L[M],R[M],sz[M]; inline int dis(int x,int y){return (abs(x-y)+1)>>1;} inline void solve(){ n=read(),ans=INF; for(int i=1;i<=n;i++){ L[i]=read(),R[i]=read(),sz[i]=0; c[i][sz[i]++]=L[i]; if(L[i]=1){ if(dn==1){F[i][k]=0;break;} for(int j=0;j=L[dn-1]&&x<=R[dn-1]) --dn; else break; } } int l=-1,r=INF; for(int i=n;l<=r&&i>=1;--i){ for(int j=0;j=l&&c[i][j]<=r) ans=min(ans,F[i][j]); l=max(l,L[i]),r=min(r,R[i]); } printf("%d\n",ans); // cod[++m]=A[i],cod[++m]=B[i]; // sort(cod+1,cod+m+1),m=unique(cod+1,cod+m+1)-cod-1; // for(int i=1;i<=n;i++){ // L[i]=lower_bound(cod+1,cod+m+1,L[i])-cod; // R[i]=lower_bound(cod+1,cod+m+1,R[i])-cod; // } memset(G,0,sizeof(G)); // for(int i=1;i<=n) } int main(){ //freopen(".in","r",stdin); //freopen(".out","w",stdout); for(int Cas=read();Cas;--Cas) solve(); return 0; }