#include<cstdio>
#include<cstring>
#include<string>
#include<iostream>
#include<vector>
#include<climits>
#define ll long long
using namespace std;
const int N = 1e6 + 10;
vector<pair<ll, ll>>s;
ll a[N],b[N];
int main() {
int t;
scanf("%d", &t);
while (t--) {
int n;
scanf("%d", &n);
for (int i = 1; i <= n; ++ i) {
scanf("%lld%lld", &a[i], &b[i]);
}
ll sum = 0;
ll mi;
if (a[1] > b[n]) {
sum = a[1] - b[n];
a[1] = b[n];
}
mi = a[1];
for(int i=2;i<=n;++i){
if(a[i]>b[i-1]){
if(a[i]>b[i-1]) sum+=a[i]-b[i-1];
a[i]=b[i-1];
}
if(a[i]<mi) mi=a[i];
}
printf("%lld\n", mi + sum);
}
return 0;
}
每个怪兽有两种死亡方式,第一种是直接被打死,第二种是被上一个怪兽炸死。所以,第二种方式的性价比更高。因此,我们可以将怪兽血量都控制在能被上一个怪兽炸死的范围内,在取所有怪兽中血量最少的打死即可。