#include using namespace std; //macro----------------------------------------------------------------------------------------- #define rep(i,a,b) for(int i=a;ib;i--) #define int long long //constant-------------------------------------------------------------------------------------- const int inf = 100100100100000; const int mod = 1000000007; int dx[4]={1,0,-1,0}; int dy[4]={0,1,0,-1}; const string alpha = "abcdefghijklmnopqrstuvwxyz"; //general_method-------------------------------------------------------------------------------- vector cs(vector arr){vector ret = arr;rep(i,1,arr.size()){ret[i] += ret[i-1];}return ret;} int ceil(int a, int b){if(a%b == 0) return a/b;else return a/b + 1;} int digitlen(int i){int t = i;int count = 0;while(t){count += 1;t /= 10;}return count;} int gcd(int m, int n){if((0== m)||(0 == n))return 0;while(m != n){if(m > n)m = m - n;else n = n - m;}return m;} int lcm(int n, int m){return n*m/gcd(n,m);} //io_method------------------------------------------------------------------------------------- int input(){int tmp;cin >> tmp;return tmp;} string raw_input(){string tmp;cin >> tmp;return tmp;} string readline(){string s;getline(cin, s);return s;} template ostream &operator<<(ostream &o, const vector&obj) {o << "{"; for (int i = 0; i < (int)obj.size(); ++i) o << (i > 0 ? ", " : "") << obj[i]; o << "}"; return o;} template ostream &operator<<(ostream &o, const pair&obj) {o << "{" << obj.first << ", " << obj.second << "}"; return o;} template