#include #include #include #include using namespace std; int gcd(int a,int b) { while(b) { int t=a%b; a=b; b=t; } return a; } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); vector >T; T.reserve(20138910); auto add=[&](int a,int b){ int mxab=max(a,b); for(int k=1;mxab*k<=(int)4e6;k++)T.emplace_back(a*k,b*k); }; for(int m=1;m*m<=(int)6e6;m++) { for(int n=1;n>X>>Y>>M; long ans=0; for(auto[a,b]:T) { int lx=a+1,rx=X-a; int ly=b+1,ry=Y-b; if(lx>rx||ly>ry)continue; ans+=(long)(rx-lx+1)*(ry-ly+1)%M; if(ans>=M)ans-=M; } ans=ans*2%M; for(int a=1;a+1<=X-a;a++) { ans+=(long)(X-a-a-1+1)*Y*2%M; if(ans>=M)ans-=M; } for(int b=1;b+1<=Y-b;b++) { ans+=(long)X*(Y-b-b-1+1)*2%M; if(ans>=M)ans-=M; } cout<