1 //倒着存 B取的低精最大值所以简化了一点
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;
const int N=,B=1e4,W=,L=;
struct people{
int a,b,t;
}p[N];
bool cmp(people x,people y){
return x.t<y.t;
}
struct big{
int size,d[L];
big(int a=):size(a){memset(d,,sizeof(int)*L);}
};
bool bigger(big &a,big &b){
if(a.size>b.size) return true;
if(a.size<b.size) return false;
for(int i=a.size-;i>=;i++){
if(a.d[i]>b.d[i]) return true;
}
return false;
}
bool noSmallInt(big &a,int k){ //special
if(a.size>) return true;
if(a.d[]>=k) return true;
return false;
}
void clear0(big &a){
a.size=;
memset(a.d,,sizeof(int)*L);
}
void copy(big &t,big &s){
t.size=s.size;
memcpy(t.d,s.d,sizeof(int)*L);
}
void chengInt(big &a,int k){
int g=,i;
for(i=;i<a.size;i++){
int tmp=a.d[i]*k;
a.d[i]=(tmp+g)%B;
g=(tmp+g)/B;
}
while(g){
a.d[i++]=g%B; a.size++;
g/=B;
}
}
void jianInt(big &a,int k){
if(a.d[]<k){
int i=;a.d[]+=B;
while(a.d[i]==) {a.d[i]+=B;i++;}
a.d[i]--;
while(i==a.size-&&a.d[i]==) a.size--,i--;
}
a.d[]-=k;
}
void addInt(big &a,int k){
int g,i=,tmp=a.d[]+k;
a.d[]=tmp%B;
g=tmp/B;
while(g){
tmp=a.d[++i]+g;
a.d[i]=tmp%B; if(i>a.size-) a.size=i+;
g=tmp/B;
}
}
void chuInt(big &a,int k){
int g=;
for(int i=a.size-;i>=;i--){
g=g*B+a.d[i];
a.d[i]=g/k;
g%=k;
}
while(a.d[a.size-]==) a.size--;
}