#include <bits/stdc++.h>
#define re register int
#define il inline
#define int long long
#define getchar() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++)
using namespace std;
const int inf=1e9;
char buf[1<<23],*p1=buf,*p2=buf,obuf[1<<23],*O=obuf;
il int read(){
char c=getchar();int z=0,f=1;
while(c!='-'&&(c>'9'||c<'0')) c=getchar();
if(c=='-') f=-1,c=getchar();
while(c>='0'&&c<='9') z=(z<<1)+(z<<3)+c-'0',c=getchar();
return z*f;
}