#pragma once
#include<cstdint>namespacehaar_lib{int64_tsum_of_floor_of_linear(int64_tN,int64_tM,int64_tA,int64_tB){int64_tret=0;if(B>=M){ret+=N*(B/M);B%=M;}if(A>=M){ret+=N*(N-1)*(A/M)/2;A%=M;}int64_ty_max=(A*N+B)/M;int64_tx_max=y_max*M-B;if(y_max==0)returnret;ret+=(N-(x_max+A-1)/A)*y_max;ret+=sum_of_floor_of_linear(y_max,A,M,(A-x_max%A)%A);returnret;}}// namespace haar_lib