#pragma GCC optimize("Ofast") #include #include using namespace std; unsigned long floor_sum(unsigned int N,unsigned int M,unsigned int A,unsigned int B) //Sum[floor((A*i+B)/M),{i,0,N-1}] { unsigned long ans=0; if(B>=M) { unsigned int BM=B/M; ans+=(unsigned long)N*BM; B-=BM*M; } while(true) { unsigned int AM=A/M; ans+=(unsigned long)N*(N-1)/2*AM; A-=AM*M; if((unsigned long)A*N+B