Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include<bits/stdc++.h>using namespace std;typedef long long ll;typedef double db;const int N=100010,M=1000010,P=1e9+7;const int inf=0x3f3f3f3f;const int INF=0xcfcfcfcf;const double eps=1e-9,pi=asin(1)*2;inline ll read();#define cmax(a,b) a=max(a,b)#define cmin(a,b) a=min(a,b)inline int ADD(int a,int b) { return a+b>=P?a+b-P:a+b; }inline int MINUS(int a,int b) { return a-b<0?a-b+P:a-b; }#define plus(a,b) a=ADD(a,b)#define minus(a,b) a=MINUS(a,b)#define mul(a,b) a=(1ll*a*(b))%P#define mem(a,b) memset(a,b,sizeof(a))#define pii pair<int,int>#define pil pair<int,ll>#define pli pair<ll,int>#define pll pair<ll,ll>#define mp(x,y) make_pair(x,y)#ifdef FILEconst int READ_SIZE=1<<20;char buf[READ_SIZE],*p1=buf,*p2=buf;#define getchar() p1==p2&&(p2=(p1=buf)+fread(buf,1,READ_SIZE,stdin),p1==p2)?EOF:*p1++#endifinline ll read(){ll s=0;