#pragma once
// a/b 以下の最大の整数longlongfloor(longlonga,longlongb){assert(b!=0);if(b<0)a=-a,b=-b;returna/b-(a%b<0);}// a/b 未満の最大の整数longlongunder(longlonga,longlongb){assert(b!=0);if(b<0)a=-a,b=-b;returna/b-(a%b<=0);}// a/b 以上の最小の整数longlongceil(longlonga,longlongb){assert(b!=0);if(b<0)a=-a,b=-b;returna/b+(a%b>0);}// a/b 超過の最小の整数longlongover(longlonga,longlongb){assert(b!=0);if(b<0)a=-a,b=-b;returna/b+(a%b>=0);}// a mod b (b > 0)longlongmodulo(longlonga,longlongb){assert(b>=0);longlongc=a%b;returnc<0?c+b:c;}
#line 2 "misc/int_div.hpp"
// a/b 以下の最大の整数longlongfloor(longlonga,longlongb){assert(b!=0);if(b<0)a=-a,b=-b;returna/b-(a%b<0);}// a/b 未満の最大の整数longlongunder(longlonga,longlongb){assert(b!=0);if(b<0)a=-a,b=-b;returna/b-(a%b<=0);}// a/b 以上の最小の整数longlongceil(longlonga,longlongb){assert(b!=0);if(b<0)a=-a,b=-b;returna/b+(a%b>0);}// a/b 超過の最小の整数longlongover(longlonga,longlongb){assert(b!=0);if(b<0)a=-a,b=-b;returna/b+(a%b>=0);}// a mod b (b > 0)longlongmodulo(longlonga,longlongb){assert(b>=0);longlongc=a%b;returnc<0?c+b:c;}