#include #include #include using namespace atcoder; using mint = modint998244353; using namespace std; #define rep(i,n) for (int i = 0; i < (n); ++i) #define Inf32 1000000001 #define Inf64 1000000000000000001 int check(vector l,vector r,long long k){ map> mp; rep(i,l.size()){ mp[l[i]].push_back(r[i]); } int n = l.size(); priority_queue,greater> Q; rep(i,n){ int cur = k + i; while(mp.size()>0){ auto it = mp.begin(); if(it->first <= cur){ rep(j,it->second.size())Q.push(it->second[j]); mp.erase(it); } else break; } if(Q.size()==0)return -1; if(Q.top()>n; vector l(n),r(n); rep(i,n)cin>>l[i]>>r[i]; long long ans = 0; { long long ok = -1,ng = 2000000000; while(ng-ok>1LL){ long long mid = (ok+ng)/2; if(check(l,r,mid)<=0)ok = mid; else ng =mid; } ans += ok; } { long long ok = -1,ng = 2000000000; while(ng-ok>1LL){ long long mid = (ok+ng)/2; if(check(l,r,mid)<=-1)ok = mid; else ng =mid; } ans -= ok; } cout<