#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; // Macro and Macro Functions #define loop while(1) #define Init = 0 #define rep(a, b) for(int a = 0; a < b; ++a) #define REP(a, b, c) for(int a = b; a < c; ++a) #define mrep(a, m) for(auto a = m.begin(); a != m.end(); ++a) #define debug if(DEBUG) #define int long long #define SORT(a) sort(ALL(a)) #define REVERSE(a) reverse(ALL(a)) #define MOD 1000000007 #define ALL(a) a.begin(), a.end() #define ALLIN(a) rep(i,a.size()) cin>>a[i] #define ALLINDE(a) rep(i,a.size()){cin>>a[i]; --a[i];} #define YN(a) do{if(a) cout<<"YES"; else cout<<"NO";}while(0) #define Yn(a) do{if(a) cout<<"Yes"; else cout<<"No";}while(0) #define yn(a) do{if(a) cout<<"yes"; else cout<<"no";}while(0) #define spa " " #define dspa " " #define ctoi(c) (c)-'0' #define altoi(a) (a)-'a' #define MAX 100010 // List of using using ll = signed long long; using ull = unsigned long long; using pint = pair; using pong = pair; using tint = tuple; using tong = tuple; using vint = vector; using vll = vector; using vbol = vector; using vstr = vector; using vull = vector; using dvin = vector>; using dvbo = vector>; using mint = map; // Common Variable bool DEBUG=false; int INF=3141592653; void print(){ cout<<'\n'; } template void print(HEAD&& head,TAIL&&... tail){ cout<(tail)...); } void scan(){} template void scan(HEAD&& head,TAIL&&... tail){ cin>>head; scan(forward(tail)...); } template void print(vector &v){ rep(i,v.size()){ cout<