#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef pair P; typedef long long ll; typedef vector vi; typedef vector vll; #define pu push #define pb push_back #define mp make_pair #define eps 1e-9 #define INF 2000000000 #define sz(x) ((int)(x).size()) #define fi first #define sec second #define SORT(x) sort((x).begin(),(x).end()) #define all(x) (x).begin(),(x).end() #define rep(i,n) for(int (i)=0;(i)<(int)(n);(i)++) #define repn(i,a,n) for(int (i)=(a);(i)<(int)(n);(i)++) #define EQ(a,b) (abs((a)-(b)) b.len; if(a.l!=b.l)return a.l > b.l; return a.m > b.m; } typedef pair PD; void print(PD x){ printf("len %d l %d m %d\n",x.fi.len,x.fi.l,x.fi.m); printf("len %d l %d m %d\n",x.sec.len,x.sec.l,x.fi.m); } Data input_data(){ Data res; scanf("%d %d %d",&(res.len),&(res.l),&(res.m)); return res; } PD upd(PD a,PD b,int f){ vector v; v.pb(a.fi);v.pb(a.sec); if(b.fi.l!=f)v.pb(Data(b.fi.len+1,b.fi.m,f)); else v.pb(Data(b.sec.len+1,b.sec.m,f)); sort(all(v),comp); PD res; res.fi = v[0]; int id = 1; while(id<(int)v.size()&&v[id].l==v[0].l)id++; res.sec = v[id]; return res; } PD merge(PD a,PD b){ vector v; v.pb(a.fi);v.pb(a.sec);v.pb(b.fi);v.pb(b.sec); sort(all(v),comp); PD res; res.fi = v[0]; int id = 1; while(id<(int)v.size()&&v[id].l==v[0].l)id++; res.sec = v[id]; return res; } const int SIZE = 1<<17; struct segtree{ PD seg[SIZE*2]; segtree(){ for(int i=0;i vs; int main(){ /*while(1){ PD a,b; a.fi = input_data(); a.sec = input_data(); b.fi = input_data(); b.sec = input_data(); print(merge(a,b,-1)); }*/ scanf("%d",&N); for(int i=0;i