C++快读快写模板
#pragma GCC optimize("Ofast","inline")
#include<bits/stdc++.h>
using namespace std;
#define BEGIN signed main(){ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
#define END exit(0);}
#define endl '\n'
#define lowbit(x) ((x)&-(x))
typedef long long ll;
typedef unsigned long long ull;
template<class T>void read(T& x)
{
x=0;int f=1;char c=getchar();
while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}
while(c>='0'&&c<='9'){x=(x<<3)+(x<<1)+(c^48);c=getchar();}
x*=f;
}//快读
template<class T>void write(T& x)
{
int num=0;char c[40];
while(x)c[++num]=(x%10)+48,x/=10;
while(num)putchar(c[num--]);
}//快写
const int mod=1e9+7;
BEGIN
#ifdef AC
freopen("in.in","r",stdin);
freopen("out.out","w",stdout);
// 手动修改栈内存
// 程序结束时必须使用exit(0)
int size=64<<20; // 申请64MB栈空间
// 32位Windows使用
// __asm__("movl %0, %%esp\n"::"r"((char*)malloc(size)+size));
// Linux以及64位Windows使用
__asm__("movq %0, %%rsp\n"::"r"((char*)malloc(size)+size));
#endif
END