#include #include #include #include using namespace std; int readPosIntLn(){ int x=0; int cnt=0; int fi=-1; while(true){ char g=getchar(); if('0'<=g && g<='9'){ x*=10; x+=g-'0'; if(cnt==0){ fi=g-'0'; } cnt++; assert(!(cnt>10 || ( cnt==10 && fi>1) )); } else if(g=='\n'){ return x; } else { assert(false); } } } long long readPosLongLn(){ long long x=0; int cnt=0; int fi=-1; while(true){ char g=getchar(); if('0'<=g && g<='9'){ x*=10; x+=g-'0'; if(cnt==0){ fi=g-'0'; } cnt++; assert(!(cnt>20 || ( cnt==19 && fi>1) )); } else if(g=='\n'){ return x; } else { assert(false); } } } int readPosIntSpace(){ int x=0; int cnt=0; int fi=-1; while(true){ char g=getchar(); if('0'<=g && g<='9'){ x*=10; x+=g-'0'; if(cnt==0){ fi=g-'0'; } cnt++; assert(!(cnt>10 || ( cnt==10 && fi>1) )); } else if(g==' '){ return x; } else { assert(false); } } } long long readPosLongSpace(){ long long x=0; int cnt=0; int fi=-1; while(true){ char g=getchar(); if('0'<=g && g<='9'){ x*=10; x+=g-'0'; if(cnt==0){ fi=g-'0'; } cnt++; assert(!(cnt>20 || ( cnt==19 && fi>1) )); } else if(g==' '){ return x; } else { assert(false); } } } struct Gauss{ int arr[31]; int len; Gauss(){ len=0; } void add(int x){ for(int i=0;i0;i--){ if(arr[i]>arr[i-1]){ cur=i-1; swap(arr[i],arr[i-1]); } } } } int getMax(){ int ret=0; for(int i=0;i ret){ ret= ret^arr[i]; } } return ret; } }; Gauss Merge(Gauss a,Gauss b){ if(a.len > b.len){ swap(a,b); } for(int i=0;i>T; int sm=0; while(T--){ //cin>>n>>k; n=readPosIntSpace(); k=readPosLongLn(); sm+=n; assert(1<=sm && sm<=100000); assert(1ll<=k && k<=100000000000000ll); for(int i=0;i>c[i]>>d[i]; } Gauss forward; stack backward; int cur=0; long long sm=0; int bst=0; for(int i=0;i=i;j--){ c.add(d[j]); backward.push(c); } forward=Gauss(); } if(cur != i) backward.pop(); sm -= c[i]; } cout<