#define gc getchar_unlocked
template<typename T> void read(T &x) {char c = gc(); int f = 1; x = 0;while (!isdigit(c)) f = (c == '-' ? -f : f), c = gc();while (isdigit(c)) x = (x << 3) + (x << 1) + c - '0', c = gc();
}
template<typename T, typename ... Args> void read(T &x, Args& ... args) {read(T); read(args);}
#define rep(i, s, t) for(int i=(s);i<=(t);i++)
#define per(i, s, t) for(int i=(s);i>=(t);i--)
#define ll long long
#define ull unsigned long long
#define pii pair<int,int>
#define lll __int128