#include #include #include using namespace std; int n; int a[1200] , b[1200]; map < pair , int > m , v; int ans; int near ( int p , int i ) { if ( p == a[i] || p == a[i]+1 || p == b[i] || p == b[i-1] ) return 1; return 0; } int xx ( int p , int i ) { if ( i == n + 1 ) return 0; if ( near ( p , i ) ) if ( i != 1 ) if ( v[make_pair(p,i)] ) return m[make_pair(p,i)]; int t; if ( a[i] <= p && p <= b[i] ) t = xx (p,i+1); else { if ( p < a[i] ) { if ( (a[i]-p) % 2 == 0 || a[i] == b[i] ) t = xx ( a[i] , i + 1 ) + (a[i]-p+1) / 2; else t = min ( xx(a[i],i+1) , xx(a[i]+1,i+1) ) + (a[i]+1-p)/2; } else { if ( (p-b[i])%2== 0 || a[i]==b[i] ) t = xx(b[i],i+1) + (p-b[i]+1)/2; else t = min ( xx(b[i],i+1) , xx(b[i]-1,i+1) ) + (p-b[i]+1) / 2; } } if ( i == 1 || !near ( p , i ) ) return t; v[make_pair(p,i)] = 1; m[make_pair(p,i)] = t; return t; } int main () { int t , i; scanf ( "%d" , &t ); while ( t-- ) { scanf ( "%d" , &n ); m.clear(); v.clear (); ans = 2147483647; for ( i = 1 ; i <= n ; i++ ) { scanf ( "%d%d" , &a[i] , &b[i] ); } for ( i = a[1] ; i <= b[1] ; i++ ) { ans = min ( ans , xx ( i , 1 ) ); } printf ( "%d\n" , ans ); } return 0; }