// g++-15 1.cpp -std=c++20 -O2 -I . #include using namespace std; #pragma GCC optimize("O3") #pragma GCC optimize("unroll-loops") // #include // #include // #include // using namespace __gnu_pbds; #include using namespace atcoder; using ll = long long; using ld = long double; using vi = vector; using vvi = vector; using vll = vector; using vvll = vector; using vld = vector; using vvld = vector; using vst = vector; using vvst = vector; #define fi first #define se second #define pb push_back #define eb emplace_back #define pq_big(T) priority_queue,less> #define pq_small(T) priority_queue,greater> #define all(a) a.begin(),a.end() #define rep(i,start,end) for(ll i=(start);i<(ll)(end);i++) #define per(i,start,end) for(ll i=(start);i>=(ll)(end);i--) #define uniq(a) sort(all(a));a.erase(unique(all(a)),a.end()) random_device seed; mt19937_64 randint(seed()); ll grr(ll mi, ll ma) { // [mi, ma) return mi + randint() % (ma - mi); } int main(){ std::ios::sync_with_stdio(false); std::cin.tie(nullptr); int n;cin>>n; ll a=0,b=0; ll px=-1,py=-1; rep(i,0,n){ ll x,y;cin>>x>>y; ll na=0,nb=0; if(y==px){ na=max(na,a+y); } else{ na=max(na,a); } if(y==py){ na=max(na,b+y); } else{ na=max(na,b); } if(x==px){ nb=max(nb,a+x); } else{ nb=max(nb,a); } if(x==py){ nb=max(nb,b+x); } else{ nb=max(nb,b); } if(x==y){ na+=x; nb+=x; } a=na;b=nb; px=x;py=y; // cout<