#pragma GCC optimize("Ofast") #pragma GCC optimize("inline") #include using namespace std; const int inf=1.5e9; int T, n, m, p[5030], f[5030]; int li[5010], ri[5010]; void fuck(int l,int r){ for (int i=1;i<=m;++i) if (p[i]>=l&&p[i]<=r){ }else{ f[i]=inf; } } inline void Umn(int &x,int y){ x=min(x,y); } void fix(int l,int r){ l=lower_bound(p+1,p+m+1,l)-p; r=lower_bound(p+1,p+m+1,r)-p; static int pre[2]; pre[0]=pre[1]=0; for (int i=l;i<=m;++i){ if (pre[0]){ if (p[i]%2==0){ Umn(f[i],(p[i]-p[pre[0]])/2+f[pre[0]]); }else{ Umn(f[i],(p[i]-p[pre[0]])/2+1+f[pre[0]]); } } if (pre[1]){ if (p[i]%2==0){ Umn(f[i],(p[i]-p[pre[1]])/2+1+f[pre[1]]); }else{ Umn(f[i],(p[i]-p[pre[1]])/2+f[pre[1]]); } } pre[(p[i]%2+2)%2]=i; } pre[0]=pre[1]=0; for (int i=r;i>=1;--i){ if (pre[0]){ if (p[i]%2==0){ Umn(f[i],(-p[i]+p[pre[0]])/2+f[pre[0]]); }else{ Umn(f[i],(-p[i]+p[pre[0]])/2+1+f[pre[0]]); } } if (pre[1]){ if (p[i]%2==0){ Umn(f[i],(-p[i]+p[pre[1]])/2+1+f[pre[1]]); }else{ Umn(f[i],(-p[i]+p[pre[1]])/2+f[pre[1]]); } } pre[(p[i]%2+2)%2]=i; } } int main(){ for (cin>>T;T--;){ cin>>n; m=0; for (int i=1;i<=n;++i){ scanf("%d%d",&li[i],&ri[i]); //p[++m]=li[i]-1; p[++m]=li[i]; p[++m]=li[i]+1; p[++m]=ri[i]-1; p[++m]=ri[i]; //p[++m]=ri[i]+1; } sort(p+1,p+m+1); m=unique(p+1,p+m+1)-p-1; memset(f,0,sizeof f); for (int i=1;i<=n;++i){ fuck(li[i],ri[i]); //for (int j=1;j<=m;++j) printf(" %d",f[j]); puts(""); fix(li[i],ri[i]); //for (int j=1;j<=m;++j) printf(" %d",f[j]); puts(""); } printf("%d\n",*min_element(f+1,f+m+1)); } }