/*********读入*********/
//字符型
ch=getchar();
//int long long 支持正负 支持多组输入
template <class T>/**调用时:scan_d<int>(x)**/
inline bool scan_d(T &ret) {
char c;
int sgn;
if(c=getchar(),c==EOF)
return 0;
while(c!=' - '&&(c<'0'||c>'9'))
c=getchar();
sgn=(c==' - '?-1:1);
ret=(c==' - ')?0:(c-'0');
while(c=getchar(),c>='0'&&c<='9')
ret=ret*10+(c-'0');
ret*=sgn;
return 1;
}
//double float
template <class T>
inline bool scan_lf(T &num)
{
char in;T Dec=0.1;
bool IsN=false,IsD=false;
in=getchar();
if(in==EOF) return false;
while(in!='-'&&in!='.'&&(in<'0'||in>'9'))
in=getchar();
if(in=='-'){IsN=true;num=0;}
else if(in=='.'){IsD=true;num=0;}
else num=in-'0';
if(!IsD){
while(in=getchar(),in>='0'&&in<='9'){
num*=10;num+=in-'0';}
}
if(in!='.'){
if(IsN) num=-num;
return true;
}else{
while(in=getchar(),in>='0'&&in<='9'){
num+=Dec*(in-'0');Dec*=0.1;
}
}
if(IsN) num=-num;
return true;
}
/********输出**********/
//int long long 不可为负数
template <class T>
inline void out(T x){
if(x>9) out(x/10);
putchar(x%10+'0')
}