#include #define fi first #define se second #define pb push_back #define SZ(x) ((int)x.size()) #define L(i,u) for (register int i=head[u]; i; i=nxt[i]) #define rep(i,a,b) for (register int i=(a); i<=(b); i++) #define per(i,a,b) for (register int i=(a); i>=(b); i--) using namespace std; typedef long long ll; typedef unsigned int ui; typedef pair Pii; typedef vector Vi; template inline void read(T &x){ x=0; char c=getchar(); int f=1; while (!isdigit(c)) {if (c=='-') f=-1; c=getchar();} while (isdigit(c)) {x=x*10+c-'0'; c=getchar();} x*=f; } template inline void umin(T &x, T y){x=x inline void umax(T &x, T y){x=x>y?x:y;} inline ui R() { static ui seed=416; return seed^=seed>>5,seed^=seed<<17,seed^=seed>>13; } const int N = 4040,inf=0x3f3f3f3f; int n,l[N],r[N],dp[1020][N],s[N],len; int calc(int i, int j){if(i>j)swap(i,j);return (s[j]-s[i]+1)/2;} int main() { int T;read(T);while(T--){ read(n);rep(i,1,n)read(l[i]),read(r[i]); len=0; rep(i,1,n){ s[++len]=l[i];s[++len]=l[i]+1; s[++len]=r[i];s[++len]=r[i]-1; } sort(s+1,s+len+1);len=unique(s+1,s+len+1)-s-1; rep(i,1,n)l[i]=lower_bound(s+1,s+len+1,l[i])-s; rep(i,1,n)r[i]=lower_bound(s+1,s+len+1,r[i])-s; memset(dp,inf,sizeof(dp));rep(i,1,len)dp[0][i]=0; rep(i,0,n-1)rep(j,1,len){ if(jr[i+1]){ umin(dp[i+1][r[i+1]],dp[i][j]+calc(j,r[i+1])); if(l[i+1]<=r[i+1]-1)umin(dp[i+1][r[i+1]-1],dp[i][j]+calc(j,r[i+1]-1)); } else umin(dp[i+1][j],dp[i][j]); } int res=inf;rep(i,1,len)umin(res,dp[n][i]);printf("%d\n",res); } return 0; }